判断字符串是否为回文的代码
时间: 2023-11-15 16:02:38 浏览: 48
以下是判断字符串是否为回文的C语言代码:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
int i, len, flag = 0;
printf("请输入一个字符串:");
scanf("%s", str);
len = strlen(str);
for(i=0;i<len;i++)
{
if(str[i] != str[len-i-1])
{
flag = 1;
break;
}
}
if(flag)
{
printf("%s 不是回文字符串\n", str);
}
else
{
printf("%s 是回文字符串\n", str);
}
return 0;
}
```
该代码首先输入一个字符串,然后使用strlen函数获取字符串的长度,接着使用for循环遍历字符串,判断字符串是否为回文。如果是回文,则输出“是回文字符串”,否则输出“不是回文字符串”。
相关问题
java判断字符串是否为回文
要判断一个字符串是否是回文,可以使用双指针的方法来比较字符串的首尾字符。具体的做法是,定义两个指针,一个指向字符串的起始位置,另一个指向字符串的末尾位置。然后,不断地比较两个指针所指向的字符是否相等,如果都相等,则将两个指针分别向中间移动一位,继续比较;如果有一个不相等,则说明字符串不是回文。当两个指针相遇时,表示已经比较完整个字符串,且所有字符都相等,所以字符串是回文。
下面是使用Java语言实现的判断字符串是否是回文的代码示例:
```java
public boolean isPalindrome(String s) {
if (s == null || s.length() == 0) {
return true;
}
// 将字符串转换为小写,并去除非字母和数字的字符
s = s.toLowerCase().replaceAll("[^a-z0-9]", "");
int left = 0;
int right = s.length() - 1;
while (left < right) {
if (s.charAt(left) != s.charAt(right)) {
return false;
}
left++;
right--;
}
return true;
}
```
判断字符串是否为回文栈
判断字符串是否为回文可以使用栈这种数据结构来实现。具体的实现步骤如下:
1. 首先,创建一个空栈。
2. 将字符串的前一半字符依次入栈,如果字符串长度为奇数,则忽略中间的字符。
3. 遍历字符串的后一半字符,同时将栈顶字符出栈并与当前字符比较。
4. 如果所有字符都相同,则字符串为回文;如果有任何一个字符不相同,则字符串不是回文。
以下是一个示例的C++代码:
```
#include <iostream>
#include <stack>
using namespace std;
bool isPalindrome(string s) {
stack<char> stk;
int n = s.length();
// 将字符串前一半字符入栈
for (int i = 0; i < n / 2; i++) {
stk.push(s[i]);
}
// 遍历字符串后一半字符并与栈顶字符比较
int i = (n % 2 == 0) ? n / 2 : n / 2 + 1;
while (i < n) {
if (s[i] != stk.top()) {
return false;
}
stk.pop();
i++;
}
return true;
}
int main() {
string str;
cout << "请输入一个字符串:";
cin >> str;
if (isPalindrome(str)) {
cout << "该字符串是回文。" << endl;
} else {
cout << "该字符串不是回文。" << endl;
}
return 0;
}
```