当试图回答一个问题时,如何在回文中使用入队、出队、推送和窥视?,我建议可以通过以下方式找到回文std::string:
bool isPalindrome(const std::string str)
{
return std::equal(str.begin(), str.end(), str.rbegin(), str.rend());
}
Run Code Online (Sandbox Code Playgroud)
对于 Unicode 字符串,我建议:
bool isPalindrome(const std::u8string str)
{
std::u8string rstr{str};
std::reverse(rstr.begin(), rstr.end());
return str == rstr;
}
Run Code Online (Sandbox Code Playgroud)
我现在认为当字符串中有多字节字符时这会产生问题,因为多字节字符的字节顺序也被颠倒了。此外,某些字符在不同的语言环境中将彼此等效。因此,在 C++20 中: