溫馨提示×

C語言回文字符串算法怎么實現(xiàn)

小億
117
2023-11-01 13:49:49
欄目: 編程語言

實現(xiàn)回文字符串算法的一種常見方法是通過比較字符串的首尾字符來判斷是否為回文。具體步驟如下:

  1. 定義兩個指針,一個指向字符串的首字符,一個指向字符串的尾字符。
  2. 通過循環(huán),依次比較首尾字符是否相等,如果相等則繼續(xù)比較下一對字符,如果不相等則不是回文字符串。
  3. 當(dāng)指針交叉或者重合時,表示已經(jīng)比較完全部字符,且所有字符都相等,則是回文字符串。
  4. 如果循環(huán)結(jié)束但指針還沒有交叉或者重合,表示存在不相等的字符,不是回文字符串。

下面是一個簡單的C語言實現(xiàn)示例:

#include <stdio.h>
#include <stdbool.h> // 引入bool類型

bool isPalindrome(char *str) {
    int left = 0;            // 左指針
    int right = strlen(str) - 1; // 右指針

    while (left < right) {
        if (str[left] != str[right]) {
            return false; // 不相等,不是回文字符串
        }
        left++;
        right--;
    }

    return true; // 通過循環(huán),指針交叉或重合,是回文字符串
}

int main() {
    char str[100];
    printf("請輸入一個字符串:");
    scanf("%s", str);

    if (isPalindrome(str)) {
        printf("是回文字符串\n");
    } else {
        printf("不是回文字符串\n");
    }
    return 0;
}

請注意,上述代碼假設(shè)輸入的字符串不包含空格或其他特殊字符。如果字符串中包含這些字符,則需要對輸入字符串進行預(yù)處理,去除這些特殊字符。另外,上述算法的時間復(fù)雜度是O(n),其中n是字符串的長度。

0