用c++判断一个字符串是否为回文
时间: 2023-05-22 20:01:44 浏览: 482
可以使用以下代码来判断一个字符串是否为回文:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int i, j, len, flag = 1;
printf("请输入一个字符串:");
scanf("%s", str);
len = strlen(str);
for (i = 0, j = len - 1; i < len / 2; i++, j--) {
if (str[i] != str[j]) {
flag = 0;
break;
}
}
if (flag) {
printf("%s 是回文字符串\n", str);
} else {
printf("%s 不是回文字符串\n", str);
}
return 0;
}
```
该程序首先读入一个字符串,然后使用双指针法判断该字符串是否为回文。如果是回文,则输出“是回文字符串”,否则输出“不是回文字符串”。
相关问题
c++从键盘输入一个字符串,判断输入的字符串是否为回文,若是回文,输出:YES,否则输出:NO。
当然,我也可以用 C++ 代码帮您实现这个功能。以下是 C++ 代码实现:
```cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
cout << "请输入一个字符串:";
getline(cin, s); // 从键盘输入一个字符串,包括空格和其他特殊字符
int n = s.size();
bool flag = true;
for (int i = 0; i < n / 2; i++) {
if (s[i] != s[n - i - 1]) { // 判断是否为回文
flag = false;
break;
}
}
if (flag) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
return 0;
}
```
这段代码首先从键盘输入一个字符串,包括空格和其他特殊字符,使用 `getline` 函数可以实现这个功能。然后遍历字符串的前一半字符,与后一半字符进行比较,判断是否为回文。如果是回文,则输出“YES”,否则输出“NO”。
定义一个字符串类String,实现判断该字符串是否为回文字符串。所谓回文字符串,是指该字符串左右对称。例如字符串“123321”是回文字符串。
好的,以下是一个简单的String类的实现,包含判断是否为回文字符串的方法:
```c++
#include <iostream>
#include <cstring>
using namespace std;
class String {
private:
char *str;
int len;
public:
String(const char *s = "") {
len = strlen(s);
str = new char[len + 1];
strcpy(str, s);
}
~String() {
delete[] str;
}
bool isPalindrome() {
for (int i = 0; i < len / 2; i++) {
if (str[i] != str[len - i - 1]) {
return false;
}
}
return true;
}
};
int main() {
String s1("123321");
String s2("hello");
cout << s1.isPalindrome() << endl; // 输出1
cout << s2.isPalindrome() << endl; // 输出0
return 0;
}
```
在上面的代码中,String类包含一个字符数组指针str和一个整型变量len,用于保存字符串和字符串长度。构造函数使用字符串s来初始化str和len。析构函数释放str指向的内存。isPalindrome()方法遍历字符串的前半部分,判断每个字符是否与对应位置的字符相同,如果不同则返回false,否则返回true。
阅读全文
相关推荐












