C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

式のバランスの取れた括弧を確認します-O(1)スペース-C ++でのO(N ^ 2)時間計算量


コンセプト

文字‘(‘、‘)’、‘{‘、‘}’、‘[‘、‘]’を含む文字列strが与えられた場合、タスクは角かっこがバランスされているかどうかを確認することです。

の場合、角かっこはバランスが取れていると示されます
  • 開いたブラケットを閉じるには、同じタイプのブラケットで閉じる必要があります。

  • ここでも、正しい順序に従って開き角かっこを閉じます。

入力 − str =“(()){}”

出力 −はい

入力 − str =“))(([] [”

出力 −いいえ

メソッド

  • 2つの変数aとbを割り当てて、比較する2つの角かっこを追跡します。

  • カウントは、開始ブラケットに遭遇すると値が増加し、終了ブラケットに遭遇すると減少するカウントを維持する必要があります。

  • 角かっこが開いている場合は、b =a、a =a + 1、count =count+1を割り当てます。

  • 閉じ角かっこが検出されたときに、カウントをデクリメントし、iとjの角かっこを比較します。

    • aとbの角かっこが一致していることがわかっている場合は、文字列の「#」をthとb番目の位置に置き換えます。 「#」以外の値が検出されるか、b≥0になるまで、aはインクリメントされ、bはデクリメントされます。

    • aとbの角かっこが一致しないことがわかっている場合は、falseを返します。

  • count!=0の場合、falseを返します。

// C++ implementation of the approach
#include <iostream>
using namespace std;
bool helperFunc(int& count1, string& s1, int& i1, int& j1, char tocom1){
   count1--;
   if (j1 > -1 && s1[j1] == tocom1) {
      s1[i1] = '#';
      s1[j1] = '#';
      while (j1 >= 0 && s1[j1] == '#')
         j1--;
      i1++;
      return 1;
   }
   else
      return 0;
}
bool isValid(string s1){
   if (s1.length() == 0)
      return true;
   else {
      int i1 = 0;
      int count1 = 0;
      int j1 = -1;
      bool result1;
      while (i1 < s1.length()) {
         switch (s1[i1]) {
            case '}':
               result1 = helperFunc(count1, s1, i1, j1, '{');
               if (result1 == 0) {
                  return false;
               }
            break;
            case ')':
               result1 = helperFunc(count1, s1, i1, j1, '(');
               if (result1 == 0) {
                  return false;
               }
            break;
            case ']':
               result1 = helperFunc(count1, s1, i1, j1, '[');
               if (result1 == 0) {
                  return false;
               }
            break;
            default:
               j1 = i1;
               i1++;
               count1++;
            }
         }
         if (count1 != 0)
            return false;
         return true;
   }
}
// Driver code
int main(){
   string str1 = "[[]][]()";
   if (isValid(str1))
      cout << "Yes";
   else
      cout << "No";
   return 0;
}
>

出力

Yes

  1. 優先スケジューリングのためのC++プログラム

    n個のプロセス、つまりP1、P2、P3、.......、Pnと、各プロセスに関連付けられた対応するバースト時間と優先度が与えられます。タスクは、優先CPUスケジューリングアルゴリズムを使用して、平均待機時間、平均ターンアラウンドタイム、およびプロセス実行のシーケンスを見つけることです。 待機時間と所要時間とは何ですか? 所要時間 プロセスの送信から完了までの時間間隔です。 所要時間=プロセスの完了–プロセスの提出 待機時間 ターンアラウンドタイムとバーストタイムの差です 待機時間=所要時間–バースト時間 優先スケジューリングとは何ですか? 優先度スケジューリングでは、すべての

  2. Pythonでバランスの取れた括弧を確認します

    多くの場合、式に存在する角かっこに関して式のバランスが取れているかどうかを確認する必要があります。バランスが取れているということは、左角かっこごとに対応する右角かっこがあり、角かっこの順序が適切に並べられていることを意味します。これは、角かっこが頻繁に使用されるプログラムや数式を作成する際に重要です。このトピックでは、角かっこを含む式のバランスが取れているかどうかをプログラムで確認する方法を説明します。 完全な排除 この方法では、最も内側の角かっこのペアを見つけて、それらをnull値に置き換えます。ブラケットのすべてのペアが交換されるまで、これを続けます。それでも括弧が残っている場合、式はバ