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

C++で信号が文字列内のすべての位置に到達するのにかかる時間を検索します


このチュートリアルでは、信号が文字列内のすべての位置に到達するまでにかかる時間を見つけるプログラムについて説明します

このために、「x」と「o」を含む文字列が提供されます。信号は「x」から発生し、2方向に移動して、1つの単位時間に1つの「o」値を変更します。私たちのタスクは、文字列全体を「x」に変換するための完全な時間を計算することです。

#include <bits/stdc++.h>
using namespace std;
//calculating the total required time
int findMaximumDuration(string s, int n) {
   int right = 0, left = 0;
   int count = 0, maximumLength = INT_MIN;
   s = s + '1';
   for (int i = 0; i <= n; i++) {
      if (s[i] == 'o')
         count++;
      else {
         if (count > maximumLength) {
            right = 0;
            left = 0;
            if (s[i] == 'x')
               right = 1;
            if (((i - count) > 0) && (s[i - count - 1] == 'x'))
               left = 1;
            count = ceil((double)count / (right + left));
            maximumLength = max(maximumLength, count);
         }
         count = 0;
      }
   }
   return maximumLength;
}
int main() {
   string str = "xooxoooxxoooxoooxooxooox";
   int length = str.size();
   cout << findMaximumDuration(str, length);
   return 0;
}

出力

2

  1. C++の辞書で特定のパターンに一致するすべての文字列を検索します

    辞書と呼ばれる文字列のリストがあると考えてください。別のパターン文字列があります。私たちの仕事は、パターンに一致する文字列を見つけることです。辞書が[“ abb”、“ xyz”、“ aab”、“ kmm”]のようで、パターンが“ stt”であるとすると、結果は“ abb”、“ kmm”になります。パターンには最初に1つの文字があり、次に2つの同じ文字があるため、同じパターン文字列に従います。 この問題を解決するために、パターンに一致する辞書の単語がエンコード後のパターンと同じハッシュを持つように、パターンをエンコードします。辞書内のすべての単語を繰り返し処理し、ハッシュが同じ場所に表示します

  2. シーケンスのセット内のすべてのシーケンスに共通する最長のサブシーケンスを見つけるためのC++プログラム

    ここでは、一連のシーケンス内のすべてのシーケンスに共通する最長のサブシーケンスを見つけるためのC++プログラムについて説明します。 アルゴリズム Begin Take the array of strings as input. function matchedPrefixtill(): find the matched prefix between string s1 and s2 :    n1 = store length of string s1.    n2 = store length of string s2.    f