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

C++で繰り返される文字列内の文字のクエリ


この問題では、2つの値aとbで構成される文字列strとQクエリが与えられます。私たちのタスクは、C++で繰り返される文字列内の文字のクエリを解決するプログラムを作成することです。

問題の説明

各クエリを解決するには、インデックスaとbの文字が同じであるかどうかを確認し、それに応じて値を返す必要があります。

問題を理解するために例を見てみましょう

入力 :str =“ tutorialspoint”

Q =2

クエリ={{0、2}、{4、7}}

出力 :繰り返し

繰り返されない

説明

クエリ1の場合 、インデックス0の文字はt、インデックス2の文字はtです。どちらも同じ文字です。

クエリ1の場合 インデックス4の文字はrで、インデックス7の文字はlです。どちらも同じキャラクターではありません。

ソリューションアプローチ

この問題を解決するために、インデックスaとbの要素が同等かどうかを確認します。いずれかのインデックスが文字列の長さよりも大きい場合、beは(index%len)の値を見つけて、文字のインデックスを取得します。そして、ユーザーは比較のための新しいインデックスです。

#include <iostream>
#include <string>
using namespace std;
bool isrepeated(string str, int len, int a, int b){
   if(a > len)
      a %= len;
   if(b > len)
      b %= len;
   if(str[a] == str[b])
      return true;
   else
     return false;
}
int main(){
   string str = "tutorialspoint";
   int len = str.length();
   int Q = 3;
   int query[Q][2] = {{0, 2}, {3, 32}, {5, 18}};
   for(int i = 0; i < Q; i++){
      if(isrepeated(str, len, query[i][0], query[i][1]))
         cout<<"Character is repeated in both the index values"<<endl;
      else
         cout<<"Character is not repeated in both the index values"<<endl;
   }
   return 0;
}

出力

Character is repeated in both the index values
Character is not repeated in both the index values
Character is not repeated in both the index values

  1. ツリー内のサブツリーのDFSに対するC++クエリ

    この問題では、バイナリツリーが与えられ、特定のノードからdfsを実行する必要があります。このノードでは、指定されたノードをルートとして想定し、そこからdfsを実行します。 上記のツリーで、ノードFからDFSを実行する必要があると仮定します このチュートリアルでは、いくつかの非正統的な方法を適用して、時間計算量を大幅に削減し、より高い制約に対してもこのコードを実行できるようにします。 アプローチ −このアプローチでは、単純な方法ではありません。つまり、より高い制約では機能しないため、すべてのノードにdfsを適用するだけなので、TLEの取得を回避するためにいくつかの非正統的な方法を使用

  2. C++で文字列内のすべての文字をループするプログラム

    このプログラムでは、C++で文字列の各文字を反復処理する方法を説明します。各文字をループするには、0から(文字列の長さ– 1)までのループを使用できます。文字にアクセスするには、文字列オブジェクトの添え字演算子 []またはat()関数を使用できます。 Input: A string “Hello World” Output: “Hello World” アルゴリズム Step 1: Get the string Step 2: Use R before string to make it raw string Step 3: End サンプルコー