本文主要是介绍125.Valid Palindrome 一个击败了100%C++用户的代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
A phrase is a palindrome if, after converting all uppercase letters into lowercase letters and removing all non-alphanumeric characters, it reads the same forward and backward. Alphanumeric characters include letters and numbers.
Given a string s, return true if it is a palindrome, or false otherwise.
翻译过来就是,剔除掉字符串中的非字母字符后,判断这个字符是否是回文串。
Example 1:
Input: s = “A man, a plan, a canal: Panama”
Output: true
Explanation: “amanaplanacanalpanama” is a palindrome.
Example 2:
Input: s = “race a car”
Output: false
Explanation: “raceacar” is not a palindrome.
Example 3:
Input: s = " "
Output: true
Explanation: s is an empty string “” after removing non-alphanumeric characters.Since an empty string reads the same forward and backward, it is a palindrome.
Constrains:
-
1 <= s.length <= 2 ∗ 1 0 5 2*10^5 2∗105
-
s consists only of printable ASCII characters.
解答思路
先使用C++ string的erase搭配remove函数剔除掉所有的非字母字符,然后使用reverse函数进行逆转判断是否是回文串!
class Solution {
public:bool isPalindrome(string s) {s.erase(std::remove_if(s.begin(), s.end(),
[]( auto const& c ) -> bool { return !std::isalnum(c); } ), s.end());transform(s.begin(), s.end(), s.begin(), ::tolower);string before = s;reverse(s.begin(), s.end());if(before == s)return true;elsereturn false;}
};
(其实是空间换时间)
参考:从C++的string字符串中剔除所有非字母字符
这篇关于125.Valid Palindrome 一个击败了100%C++用户的代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!