サブストリングがSであるパリンドロームストリングを検索するためのC++コード
n文字の文字列Sがあるとします。 Tが回文であり、SがTのサブシーケンスであるような、別の文字列Tを見つける必要があります。
したがって、入力がS ="ab"の場合、出力は "aabaa"になります(他の回答も利用できます)
ステップ
これを解決するには、次の手順に従います-
res := S reverse the array S res := res + S return res
例
理解を深めるために、次の実装を見てみましょう-
#include <bits/stdc++.h> using namespace std; string solve(string S){ string res = S; reverse(S.begin(), S.end()); res += S; return res; } int main(){ string S = "ab"; cout << solve(S) << endl; }
入力
ab
出力
abba
-
C++で別の文字列の部分文字列である1つの文字列の最長部分列の長さを検索します
2つの文字列XとYがあり、文字列Xの最長部分列の長さを見つける必要があるとします。これは、シーケンスYの部分文字列です。したがって、X =“ ABCD”およびY =“ BACDBDCD”の場合、出力は3になります。 。「ACD」はXの最長のサブシーケンスであり、Yのサブストリングです。 ここでは、動的計画法を使用してこの問題を解決します。したがって、Xの長さがnで、Yの長さがmの場合、次数(m + 1)x(n + 1)のDP配列を作成します。 DP [i、j]の値は、X [0…j]のサブシーケンスの最大長であり、Y[0…i]のサブストリングです。これで、DPの各セルについて、次のようになりま
-
C++で復号化された文字列のk番目の文字を検索します
エンコードされた文字列が1つあるとします。ここで、部分文字列の繰り返しは、部分文字列の後に部分文字列の数が続くものとして表されます。したがって、文字列がab2cd2のような場合は、ababcdcdを示し、k =4の場合は、k番目の文字(ここではb)を返します。 これを解決するために、最初に空の復号化された文字列を取得し、次にサブ文字列とその頻度を1つずつ読み取ることによって文字列を解凍します。次に、復号化された文字列に現在のサブ文字列をその頻度で追加します。文字列がなくなるまでこのプロセスを繰り返し、復号化された文字列からK番目の文字を出力します。 例 #include<iostrea