共翁号
共翁号 > 知识 > 判断字符串是否为回文

判断字符串是否为回文

原创2025-06-21 02:07:54

要判断一个字符串是否为回文,你可以使用以下方法之一:

迭代法

初始化两个指针,一个指向字符串的开头,另一个指向字符串的末尾。

比较这两个指针指向的字符是否相同。

如果相同,则将两个指针向中间移动,继续比较。

如果不同,则该字符串不是回文。

如果两个指针相遇或交叉,则该字符串是回文。

递归法

基本情况:如果字符串长度为0或1,则它是回文。

递归情况:如果字符串的第一个字符和最后一个字符相同,则检查去掉首尾字符后的子字符串是否是回文。

正则表达式法

使用正则表达式去除所有非字母数字字符,并将字符串转换为小写。

如果处理后的字符串长度为0或1,或者第一个字符和最后一个字符相同,则它是回文。

栈操作法

将字符串的前半部分压入栈中。

然后逐个弹出栈顶元素,并与字符串后半部分的对应元素比较。

如果所有比较都相同,则该字符串是回文。

C/C++语言实现

```c

include

include

include

int is_palindrome(char *str) {

int i, j, len = strlen(str);

for (i = 0, j = len - 1; i < j; i++, j--) {

if (str[i] != str[j])

return 0;

}

return 1;

}

int main() {

char str;

printf("输入一个字符串:");

fgets(str, sizeof(str), stdin);

str[strcspn(str, "\n")] = 0; // 去掉换行符

if (is_palindrome(str))

printf("是回文\n");

else

printf("不是回文\n");

return 0;

}

```

Python语言实现

```python

def is_palindrome(s):

if len(s) <= 1:

return True

if s == s[-1]:

return is_palindrome(s[1:-1])

else:

return False

test_strings = ['', 'a', 'madam', 'racecar', 'hello', 'level', 'noon', 'python']

for test in test_strings:

print(f'{test} 是回文吗? {is_palindrome(test)}')

```

选择适合你需求的方法进行实现即可

返回:知识

相关阅读

    最新文章
    猜您喜欢
    热门阅读