រកលិបិក្រមនៃតង្កៀបបិទសម្រាប់តង្កៀបបើកដែលមាននៅក្នុងកន្សោម  


កម្រិតលំបាក មានភាពងាយស្រួល
សួរញឹកញាប់ កម្មវិធី Adob ​​e ក្រុមហ៊ុន Amazon Flipkart ក្រុមហ៊ុន Oracle បន្ទប់អូយ Snapdeal បន្ទប់ពិសោធន៍វ៉លម៉ាត Yatra
អារេ ជង់ ខ្សែអក្សរ

សេចក្តីថ្លែងការណ៍បញ្ហា។  

ដែលបានផ្តល់ឱ្យ ខ្សែអក្សរ s នៃប្រវែង / ទំហំ n និងតម្លៃចំនួនគត់តំណាងឱ្យសន្ទស្សន៍នៃដង្កៀបការេបើក។ រកលិបិក្រមនៃដង្កៀបបិទសម្រាប់ដង្កៀបបើកដែលមាននៅក្នុងកន្សោម។

រកលិបិក្រមនៃតង្កៀបបិទសម្រាប់តង្កៀបបើកដែលមាននៅក្នុងកន្សោមពិន

ឧទាហរណ៍  

s = "[ABC[23]][89]"

index = 0
8
s = "[C-[D]]"

index = 3
5
s = "E-[FX]]"

index = 0
-1

វិធីសាស្រ្ត  

ប្រើមួយ ជង់ រចនាសម្ព័ន្ធទិន្នន័យរបស់ integer វាយដើម្បីទុកលិបិក្រមនៃតង្កៀបបើកក្នុងខ្សែអក្សរដែលបានផ្តល់ឱ្យ។ ចាប់ផ្តើមធ្វើឱ្យប្រសើរឡើងតាមអ្វីដែលបានផ្តល់ឱ្យ ខ្សែអក្សរ ចាប់ផ្តើមពីលិបិក្រមដែលបានផ្តល់ឱ្យ។ ប្រសិនបើមានតង្កៀបបើកត្រូវបានជួបប្រទះរុញវានៅក្នុងជង់។ សម្រាប់តង្កៀបបិទដែលត្រូវបានជួបប្រទះនឹងបើកតង្កៀបបើកពីជង់។ ប្រសិនបើជង់ក្លាយជាទទេមានន័យថាទំហំជង់គឺ ០ ត្រង់សន្ទស្សន៍ខ្លះបោះពុម្ពសន្ទស្សន៍។ បោះពុម្ពផ្សេងទៀត។

ក្បួនដោះស្រាយ  

  1. ចាប់ផ្តើមខ្សែអក្សរដែលមានប្រវែង / ទំហំ n និងតម្លៃចំនួនគត់តំណាង ឲ្យ សន្ទស្សន៍នៃតង្កៀបជ្រុងបើក។
  2. បង្កើតមុខងាររកលិបិក្រមនៃដង្កៀបបិទសម្រាប់ដង្កៀបបើកដែលមាននៅក្នុងខ្សែអក្សរដែលទទួលយកតម្លៃខ្សែអក្សរដែលតំណាងឱ្យការបញ្ចេញមតិនិងតម្លៃលេខតំណាងឱ្យសន្ទស្សន៍នៃតង្កៀបបើកនៅក្នុងខ្សែអក្សរដែលបានផ្តល់ជាប៉ារ៉ាម៉ែត្រ
  3. ពិនិត្យមើលថាតើតួអក្សរនៅលិបិក្រមដែលបានផ្តល់មិនស្មើទៅនឹងដង្កៀបបើកពោលគឺ '' 'បោះពុម្ព -1 និងត្រឡប់មកវិញ។
  4. បន្ទាប់ពីនោះបង្កើតរចនាសម្ព័ន្ធទិន្នន័យជង់នៃប្រភេទចំនួនគត់ដើម្បីរក្សាទុកលិបិក្រមនៃតង្កៀបបើកនៃខ្សែអក្សរដែលបានផ្តល់ឱ្យនៅក្នុងវា។
  5. ឆ្លងកាត់ខ្សែអក្សរដែលបានផ្តល់ឱ្យចាប់ផ្តើមពីសន្ទស្សន៍ដែលបានផ្តល់ហើយពិនិត្យមើលថាតើតួអក្សរនៅសន្ទស្សន៍បច្ចុប្បន្ននៅក្នុងខ្សែអក្សរស្មើនឹងតង្កៀបបើករុញ / បញ្ចូលតួអក្សរនៅសន្ទស្សន៍បច្ចុប្បន្ននៅក្នុងខ្សែអក្សរនៅក្នុងជង់។
  6. ផ្សេងទៀតប្រសិនបើតួអក្សរនៅលិបិក្រមបច្ចុប្បន្ននៅក្នុងខ្សែអក្សរស្មើនឹងតង្កៀបបិទពោលគឺ ']' ប៉ុប / យកធាតុចេញនៅខាងលើជង់។ បន្ទាប់ពីនោះពិនិត្យមើលថាតើជង់ទទេមានន័យថាទំហំជង់ស្មើនឹង ០ បោះពុម្ពបោះពុម្ពសន្ទស្សន៍បច្ចុប្បន្នហើយត្រឡប់មកវិញ។
  7. បោះពុម្ព -1 ។
សូម​មើល​ផង​ដែរ
ខ្សែអក្សរ Backspace ប្រៀបធៀប

លេខកូដ  

កម្មវិធី C ++ ដើម្បីស្វែងរកតង្កៀបបិទដែលត្រូវគ្នាសម្រាប់បើកតង្កៀប

#include <bits/stdc++.h> 
using namespace std; 
  
void test(string expression, int index){ 
    int i; 
      
    if(expression[index]!='['){ 
        cout << "-1\n"; 
        return; 
    } 
      
    stack <int> st; 
      
    for(i = index; i < expression.length(); i++){ 
          
        if(expression[i] == '['){ 
            st.push(expression[i]);
        }
          
        else if(expression[i] == ']'){ 
            st.pop(); 
            if(st.empty()){ 
                cout << i << "\n"; 
                return; 
            } 
        } 
    } 
      
    cout << "-1\n"; 
} 
  
int main() { 
    string s = "[ABC[23]][89]";
    int index = 0;
    
    test(s, index); 
    
    return 0; 
}
8

កម្មវិធីចាវ៉ាដើម្បីរកតង្កៀបបិទដែលត្រូវគ្នាសម្រាប់បើកតង្កៀប

import java.util.Stack; 

class FindIndex{ 
  
    static void test(String expression, int index){ 
        int i; 
  
        if(expression.charAt(index) != '['){ 
            System.out.print("-1\n"); 
            return; 
        } 
  
        Stack<Integer> st = new Stack<>(); 
  
        for(i = index; i < expression.length(); i++){ 
  
            if(expression.charAt(i) == '['){ 
                st.push((int) expression.charAt(i)); 
            } 
            
            else if(expression.charAt(i) == ']'){ 
                st.pop(); 
                if(st.empty()){ 
                    System.out.print( i ); 
                    return; 
                } 
            } 
        } 
  
        System.out.print("-1\n"); 
    } 
  
    public static void main(String[] args){
        String s = "[ABC[23]][89]";
        int index = 0;
        
        test(s, index); 
    } 
}
8

ការវិភាគស្មុគស្មាញ  

ស្មុគស្មាញពេលវេលា

O (n) ដែល n ជាប្រវែងនៃខ្សែអក្សរដែលបានផ្តល់ s ។ ដោយសារយើងបានឆ្លងកាត់តួអក្សរទាំងអស់ដែលមាននៅក្នុងខ្សែភាពស្មុគស្មាញពេលវេលាគឺលីនេអ៊ែរ។

ភាពស្មុគស្មាញនៃលំហ

អូ (n) ពីព្រោះយើងបានប្រើកន្លែងទំនេរដើម្បីរក្សាទុកតួអក្សរនៃខ្សែអក្សរដែលបានផ្តល់ឱ្យ។ ភាពស្មុគស្មាញនៃលំហគឺអាស្រ័យលើចំនួនតង្កៀប។ ប៉ុន្តែក្នុងករណីដែលអាក្រក់បំផុតតួអក្សរទាំងអស់អាចជាតង្កៀបជ្រុង។ ដូច្នេះភាពស្មុគស្មាញនៃលំហរក៏ជាលីនេអ៊ែរដែរ។

ឯកសារយោង