写一个函数判断一个字符串是否是回文串(用指针实现)
时间: 2023-06-21 19:22:11 浏览: 75
好的,这是一个用指针实现判断回文串的函数:
```c
int is_palindrome(char *str) {
char *left = str;
char *right = str + strlen(str) - 1; // 指向字符串末尾的指针
while (left < right) {
if (*left != *right) { // 如果左右两个字符不相等,不是回文串
return 0;
}
left++; // 左指针向右移动
right--; // 右指针向左移动
}
return 1; // 如果能够走到这里,说明是回文串
}
```
这个函数接收一个指向字符串的指针,然后使用两个指针 `left` 和 `right` 分别指向字符串的开头和结尾。然后不断比较 `left` 和 `right` 指向的字符是否相等,如果存在不相等的字符,说明不是回文串,直接返回 0;否则继续比较直到 `left` 和 `right` 相遇,说明是回文串,返回 1。
需要注意的是,我们使用指针来移动字符,而不是复制字符,这样可以提高效率。
相关问题
编写一个函数bepalindrome判断一个字符串是否是回文
好的,下面是Python语言的代码实现:
```python
def is_palindrome(s):
# 双指针从两端向中间扫描
left, right = 0, len(s) - 1
while left < right:
if s[left] != s[right]:
return False
left += 1
right -= 1
return True
```
函数 is_palindrome 的参数 s 是一个字符串,函数会判断这个字符串是否为回文,如果是回文则返回 True,否则返回 False。函数的实现采用了双指针的方法,从字符串的两端向中间扫描,如果发现两端字符不相等,则该字符串不是回文,直接返回 False;如果扫描完整个字符串,都没有发现不相等的字符,则该字符串是回文,返回 True。
用c语言:编写函数,判断一个字符串是否是回文。
可以使用双指针法,一个指针指向字符串头部,一个指针指向字符串尾部,逐一比较字符是否相同。
以下是实现代码:
```c
#include <stdio.h>
#include <string.h>
int isPalindrome(char *str) {
int len = strlen(str);
int left = 0, right = len - 1;
while (left < right) {
if (str[left] != str[right]) {
return 0;
}
left++;
right--;
}
return 1;
}
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
if (isPalindrome(str)) {
printf("%s 是回文字符串\n", str);
} else {
printf("%s 不是回文字符串\n", str);
}
return 0;
}
```
输入一个字符串后,调用 `isPalindrome()` 函数判断是否是回文字符串,返回 1 表示是回文字符串,返回 0 表示不是回文字符串。