Đưa ra một câu và thử thách là tìm ra palindrome dài nhất từ câu đã cho
Hội chứng Pali là gì?
Palindrome là một từ hoặc chuỗi có nghĩa vẫn giữ nguyên ngay cả sau khi đảo ngược chuỗi
Ví dụ - Nitin, sau khi đảo ngược chuỗi, ý nghĩa của nó vẫn giữ nguyên.
Thử thách là tìm ra palindrome dài nhất từ câu đã cho.
Câu like là:malayalam liemadameil iji
Nó chứa ba từ palindrome nhưng dài nhất là - liemadameil
Thuật toán
START STEP 1 -> Declare start variables I, j, k, l, max to 0, index to -1, check to 0, count to 0 Step 2 -> Loop For i to 0 and i<strlen(str) and i++ Set max =0, k =i and j=i+1 Loop While str[j]!=' ' and str[j]!='\0' Increment j by 1 End While Set l=j-1 IF str[k]!=' ' and str[k]!='\0' Loop While k<=1 If str[k]==str[l] Increment max by 1 If count<=max Set index=i and count = max End If End IF Else Set max = 0, count = -1 Break End Else Increment k and I by 1 End Loop While End If Set i=j Step 3 -> End Loop For Step 4 -> Loop For i = index and i!=-1 && str[i]!=' ' && str[i]!='\0' and i++ Print str[i] Step 5 -> End Loop For STOP
Ví dụ
#include <stdio.h> #include <string.h> int main(int argc, char const *argv[]) { char str[] = {"malayalam liemadameil iji"}; int i, k, l, j, max =0, index = -1, check = 0, count = 0; for(i=0; i<strlen(str); i++) { max = 0; k = i; j = i+1; while(str[j]!=' ' && str[j]!='\0'){ j++; } l = j-1; if(str[k]!=' ' && str[k]!='\0') { while(k<=l) { if (str[k]==str[l]) { max++; if(count<=max) { index = i; count = max; } } else { max = 0; count = -1; break; } k++; l--; } } i = j; } for (i = index; i!=-1 && str[i]!=' ' && str[i]!='\0'; i++) { printf("%c", str[i]); } return 0; }
Đầu ra
Nếu chúng ta chạy chương trình trên thì nó sẽ tạo ra kết quả sau.
liemadameil