Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

In từ palindrome dài nhất trong câu trong C

Palindrome: từ đọc xuôi ngược giống nhau (ví dụ: "nitin", "malayalam"). Tìm palindrome dài nhất trong câu.

Ví dụ

Câu: "malayalam liemadameil iji"

Các palindrome: malayalam (9), liemadameil (11), iji (3)

Kết quả: liemadameil

Chương trình

#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "malayalam liemadameil iji";
    int len = strlen(str);
    int maxLen = 0, startIdx = -1;
    
    for (int i = 0; i < len; i++) {
        int j = i;
        while (j < len && str[j] != ' ' && str[j] != '\0') j++;
        int wordEnd = j - 1;
        
        bool isPalin = true;
        for (int k = i, l = wordEnd; k < l; k++, l--)
            if (str[k] != str[l]) { isPalin = false; break; }
        
        if (isPalin && (wordEnd - i + 1) > maxLen) {
            maxLen = wordEnd - i + 1;
            startIdx = i;
        }
        i = j;
    }
    
    if (startIdx != -1) {
        for (int i = startIdx; i < startIdx + maxLen; i++)
            printf("%c", str[i]);
    }
    return 0;
}

Kết quả

liemadameil