检查字符串是否为回文

新手上路,请多包涵

我需要创建一个允许用户输入字符串的程序,并且我的程序将检查他们输入的字符串是否是回文(可以向后读取的单词与向前读取的单词相同)。

原文由 Wil Prim 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 561
2 个回答

只需将字符串与自身进行比较:

 string input;

cout << "Please enter a string: ";
cin >> input;

if (input == string(input.rbegin(), input.rend())) {
    cout << input << " is a palindrome";
}

string 的这个构造函数接受一个开始和结束迭代器,并从这两个迭代器之间的字符创建字符串。由于 rbegin() 是字符串的结尾,并且在字符串中向后递增,因此我们创建的字符串将反向添加 input 的字符,从而反转字符串。

然后,您只需将其与 input 进行比较,如果它们相等,则为回文。

这不考虑大小写或空格,因此您必须自己改进。

原文由 Seth Carnegie 发布,翻译遵循 CC BY-SA 3.0 许可协议

检查从两端开始的字符串并在中间相遇。如果存在差异,则返回 false。

 #include <iostream>

bool palidromeCheck(std::string str) {
    for (int i = 0, j = str.length()-1; i <= j; i++, j--)
        if (str[i] != str[j])
            return false;
    return true;
}

int main(){
    std::cout << palidromeCheck("mike");
    std::cout << palidromeCheck("racecar");
}

原文由 tothemax 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题