C ++で連結したときに回文を形成するまで、S1の接頭辞とS2の接尾辞が続くようなインデックスiを見つけます。
コンセプト
与えられた等しい長さの2つの文字列S1とS2に関して、私たちのタスクは、S1[0…i]とS2[i+1…n-1]が連結されたときに回文を与えるようなインデックスiを決定することです。そのようなインデックスを決定できない場合は、-1を出力することがわかっています。
入力
S1 = “pqrsu”, S2 = “wxyqp”
出力
1
S1 [0..1] =“ pq”、S2 [2..n-1] =“ ypq”
S1 + S2 =“ pqyqp”は、回文であることを示します。
入力
S1 = “pqrst”, S2 = “qprqz”
出力
-1
メソッド
- 最初に、0からn(文字列の長さ)まで繰り返し、i番目の文字をS1から別の文字列にコピーします(Sであると想定します)。
- その後、別の一時的な文字列tempを取得し、S2の文字をインデックスi+1からnにコピーします。
- 最後に、文字列(S + temp)が回文であるかどうかを確認します。
例
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; // Shows function that returns true if s is palindrome bool isPalindrome(string str){ int i = 0; int b = str.length() - 1; while (i< b) { if (str[i] != str[b]) return false; i++; b--; } return true; } // Shows function to return the required index int getIndex1(string S1, string S2, int n){ string S = ""; for (int i = 0; i< n; a++) { // Used to copy the ith character in S S = S + S1[i]; string temp = ""; // Used to copy all the character of string s2 in Temp for (int b = i + 1; b < n; b++) temp += S2[b]; // Verify whether the string is palindrome if (isPalindrome(S + temp)) { return i; } } return -1; } // Driver code int main(){ string S1 = "pqrsu", S2 = "wxyqp"; int n = S1.length(); cout << getIndex1(S1, S2, n); return 0; }
出力
1
-
各単語が回文であるように単語を分割する方法の数を見つけるためのC++プログラム
ここでは、各単語が回文になるように単語を分割するいくつかの方法を見つけるためのC++プログラムについて説明します。 アルゴリズム Begin Take the word as input. Function partitionadd(vector<vector<string> > &u, string &s, vector<string> &tmp, int index): if (index == 0) tmp.c
-
Pythonで連結したときに回文を形成するまでS1の接頭辞とS2の接尾辞が続くようなインデックスiを見つけます
同じ長さの2つの文字列S1とS2があるとすると、S1[0…i]とS2[i+1…n-1]が与えるようなインデックスiを見つける必要があります。それらが一緒に連結されたときの回文。不可能な場合は、-1を返します。 したがって、入力がS1 =pqrsu、S2 =wxyqpの場合、出力はS1 [0..1] =pq、S2 [2..n-1]=ypqとして1になります。 、次にS1 + S2 = pqyqp は、回文であることを示します。 これを解決するには、次の手順に従います- n:=str1のサイズ str:=空白の文字列 0からnの範囲のiの場合、実行 str:=str c