Khái niệm
Đối với hai chuỗi S1 và S2 đã cho có độ dài bằng nhau, nhiệm vụ của chúng ta là xác định chỉ số i sao cho S1 [0… i] và S2 [i + 1… n-1] cho một palindrome khi được nối với nhau. Nó đã được thấy rằng không thể xác định một chỉ số như vậy sau đó in -1.
Đầu vào
S1 = “pqrsu”, S2 = “wxyqp”
Đầu ra
1
S1 [0..1] =“pq”, S2 [2..n-1] =“ypq”
S1 + S2 =“pqyqp” chỉ ra là một palindrome.
Đầu vào
S1 = “pqrst”, S2 = “qprqz”
Đầu ra
-1
Phương pháp
- Lúc đầu, chúng tôi lặp lại từ 0 đến n (độ dài của chuỗi) và sao chép ký tự thứ i từ S1 sang một chuỗi khác (giả sử đó là S).
- Sau đó, chúng tôi lấy một chuỗi tạm thời khác và sao chép các ký tự của S2 từ chỉ mục i +1 sang n.
- Cuối cùng, chúng tôi xác minh xem chuỗi (S + temp) có phải là palindrome hay không.
Ví dụ
// 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; }
Đầu ra
1