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

長さが最大kである回文部分文字列を持つ文字列を検索するC++プログラム


nとkの2つの数があるとします。 「a」、「b」、「c」の3種類の文字のみを含む文字列Sを生成しようとしています。 kを超えない回文である文字列Sの部分文字列の最大長。

したがって、入力がn=3のような場合。 k =2の場合、出力は「aab」になります。これは、その長さが3で、回文のサブストリングが「aa」で、長さが2以上であるためです(他の回答も可能です)。

ステップ

これを解決するには、次の手順に従います-

S := a blank string
j := 0
for initialize i := 0, when i < n, update (increase i by 1), do:
   S := S concatenate (j + ASCII of 'a') as character
   j := (j + 1) mod 3
return S

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;

string solve(int n, int k) {
   string S = "";
   int j = 0;
   for (int i = 0; i < n; i++) {
      S += j + 'a';
      j = (j + 1) % 3;
   }
   return S;
}
int main() {
   int n = 3;
   int k = 2;
   cout << solve(n, k) << endl;
}

入力

3, 2

出力

abc

  1. Pythonで回文のないmサイズのアルファベットからの文字で作られたn個の長さの文字列を見つけるプログラム

    m個の文字と別の値nがあるとします。これらのm文字から文字で作成された長さnの文字列の数を数える必要があり、文字列には1より大きい長さの回文部分文字列はありません。答えが大きすぎる場合は、結果を10 ^ 9+7で変更します。 したがって、入力がn =2 m =3の場合、m =3であるため、出力は6になります。したがって、アルファベットが{x、y、z}の場合、次のような文字列を生成できます。[xx、xy、xz 、yx、yy、yz、zx、zy、zz]ですが、[xx、yy、zz]は無効であるため、6つの文字列があります。 これを解決するには、次の手順に従います- p:=10 ^ 9 + 7

  2. Pythonの文字列で最も長く繰り返される部分文字列の長さを見つけるプログラム

    小文字の文字列sがあるとすると、sで少なくとも2回出現する最長の部分文字列の長さを見つける必要があります。そのような文字列が見つからない場合は、0を返します。 したがって、入力がs =abdgoalputabdtypeabdの場合、複数回出現する最長のサブストリングは abdであるため、出力は3になります。 これを解決するには、次の手順に従います- 関数lcs()を定義します。これにはs1、s2が必要です n:=s1の最小サイズとs2のサイズ 0からn-1の範囲のiの場合、do s1[i]がs2[i]と同じでない場合、 s1の部分文字列を返す[インデックス0からi-1へ]