设计一个算法判断一个字符串是否为回文,并给出主函数
时间: 2023-12-13 08:49:41 浏览: 79
算法如下:
1. 定义两个指针,分别指向字符串的首尾字符。
2. 如果两个指针指向的字符相同,则继续比较下一个字符。
3. 如果两个指针指向的字符不同,则说明该字符串不是回文。
4. 当两个指针相遇时,说明该字符串是回文。
主函数代码如下:
```
#include <iostream>
#include <string>
using namespace std;
bool isPalindrome(string s) {
int left = 0, right = s.size() - 1;
while (left < right) {
if (s[left] != s[right]) {
return false;
}
left++;
right--;
}
return true;
}
int main() {
string s;
cout << "请输入一个字符串:";
cin >> s;
if (isPalindrome(s)) {
cout << s << " 是回文字符串" << endl;
} else {
cout << s << " 不是回文字符串" << endl;
}
return 0;
}
```
在主函数中,首先输入一个字符串,然后调用 isPalindrome 函数判断是否为回文字符串,最后输出判断结果。
相关问题
设计一个算法,判断输入的字符串是否为回文串。 说明:如果一个字符串从左往右和从右往左是一样的,则称该字符串为回文串。
设计一个判断字符串是否为回文串的简单算法可以分为两步:
1. **反转字符串**:
首先创建一个辅助函数,将输入的字符串反转。这可以通过双指针法完成,从字符串两端开始向中间移动,并比较对应的字符是否相等。
2. **比较原串和反转串**:
创建一个主函数,在这个函数中,我们首先检查原始字符串(str)与它的反转字符串(reverse_str)是否完全相等。如果两者相等,那么原始字符串就是回文串;如果不等,就不是回文串。
以下是一个 Python 语言的示例实现:
```python
def is_palindrome(s):
# 双指针法反转字符串
def reverse_string(s, start=0, end=None):
if end is None:
end = len(s) - 1
while start < end:
s[start], s[end] = s[end], s[start]
start += 1
end -= 1
return s
# 检查原串和反转串是否相等
reverse_s = reverse_string(s)
return s == reverse_s
# 测试函数
input_str = input("请输入字符串:")
if is_palindrome(input_str):
print(f"{input_str} 是回文串")
else:
print(f"{input_str} 不是回文串")
采用字符串容器存储,设计算法判断该字符串是否为回文
回文字符串是指正着读和倒着读都一样的字符串。为了判断一个字符串是否为回文,可以采用字符串容器存储,并设计以下算法:
1. 定义两个指针,分别指向字符串的首尾字符。
2. 比较两个指针所指向的字符是否相同,如果相同则继续比较下一个字符,直到两个指针相遇。
3. 如果两个指针相遇,则说明该字符串是回文,否则不是回文。
具体实现可以参考以下代码:
```c++
#include <iostream>
#include <string>
using namespace std;
bool isPalindrome(string str) {
int left = 0, right = str.length() - 1;
while (left < right) {
if (str[left] != str[right]) {
return false;
}
left++;
right--;
}
return true;
}
int main() {
string str;
cout << "请输入一个字符串:";
cin >> str;
if (isPalindrome(str)) {
cout << "该字符串是回文" << endl;
} else {
cout << "该字符串不是回文" << endl;
}
return 0;
}
```
在上面的代码中,isPalindrome函数用于判断一个字符串是否为回文,如果是回文则返回true,否则返回false。在主函数中,先输入一个字符串,然后调用isPalindrome函数进行判断,最后输出结果。
阅读全文