如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。
字母和数字都属于字母数字字符。
给定一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 。文章来源地址https://www.toymoban.com/news/detail-575028.html
#include <iostream>
using namespace std;
bool isPalindrome(const string &s);
int main()
{
string str = "hello wzn nzw ,olleh";
bool res = isPalindrome(str);
if (res) cout << "true" << endl;
else cout << "false" << endl;
return 0;
}
bool isPalindrome(const string &s)
{
int i = 0;
int j = s.size() - 1;
while (i < j)
{
//从左往右找寻字母数字字符的下标
while (!((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z') || (s[i] >= '0' && s[i] <= '9')))
{
i++;
if (i >= j) return true;
}
//从右往左找寻字母数字字符的下标
while (!((s[j] >= 'a' && s[j] <= 'z') || (s[j] >= 'A' && s[j] <= 'Z') || (s[j] >= '0' && s[j] <= '9')))
{
j--;
if (i >= j) return true;
}
//判断是否回文
if (s[i] >= '0' && s[i] <= '9')
{
if (s[i] != s[j]) return false;
}
else if (s[i] >= 'a' && s[i] <= 'z')
{
if (s[i] != s[j] && s[i] != (s[j] + 32)) return false;
}
else if (s[i] >= 'A' && s[i] <= 'Z')
{
if (s[i] != s[j] && s[i] != (s[j] - 32)) return false;
}
i++;
j--;
}
return true;
}
文章来源:https://www.toymoban.com/news/detail-575028.html
到了这里,关于[LeetCode] #125 验证回文串的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!