Hãy xem xét chúng ta có một chuỗi và một số truy vấn trong tập Q. Mỗi truy vấn chứa một cặp số nguyên i và j. và một nhân vật khác c. Chúng ta phải thay thế các ký tự ở chỉ số i và j bằng ký tự mới c. Và cho biết chuỗi có phải là palindrome hay không. Giả sử một chuỗi giống như “AXCDCMP”, nếu chúng ta sử dụng một truy vấn như (1, 5, B), thì chuỗi đó sẽ là “ABCDCBP”, sau đó một truy vấn khác như (0, 6, A), thì nó sẽ là “ABCDCBA ”, Đây là palindrome.
Chúng ta phải tạo một truy vấn bằng cách sử dụng các chỉ số i, j, sau đó thay thế các ký tự có tại các chỉ số i, j trong chuỗi, bằng c.
Ví dụ
#include <iostream> using namespace std; class Query{ public: int i, j; char c; Query(int i, int j, char c){ this->i = i; this->j = j; this->c = c; } }; bool isPalindrome(string str){ int n = str.length(); for (int i = 0; i < n/2 ; i++) if (str[i] != str[n-1-i]) return false; return true; } bool palindromeAfterQuerying(string str, Query q[], int n){ for(int i = 0; i<n; i++){ str[q[i].i] = q[i].c; str[q[i].j] = q[i].c; if(isPalindrome(str)){ cout << str << " is Palindrome"<< endl; }else{ cout << str << " is not Palindrome"<< endl; } } } int main() { Query q[] = {{1, 5, 'B'}, {0, 6, 'A'}}; int n = 2; string str = "AXCDCMP"; palindromeAfterQuerying(str, q, n); }
Đầu ra
ABCDCBP is not Palindrome ABCDCBA is Palindrome