【LeetCode】125. 驗證迴文串
阿新 • • 發佈:2018-11-10
題目連結:https://leetcode-cn.com/problems/valid-palindrome/description/
題目描述
給定一個字串,驗證它是否是迴文串,只考慮字母和數字字元,可以忽略字母的大小寫。
說明:本題中,我們將空字串定義為有效的迴文串。
示例
輸入: “A man, a plan, a canal: Panama”
輸出: true
輸入: “race a car”
輸出: false
解決方法
用雙指標
class Solution {
public:
bool isPalindrome(string s) {
//用雙指標
if (s.size()==0) return true;
transform(s.begin(),s.end(),s.begin(),::tolower);//將字串轉成小寫
int left=0,right=s.size()-1;
while(left<right){
if (!(isdigit(s[left]) || islower(s[left]))) left++;
if (!(isdigit(s[right]) || islower(s[right]))) right--;
if ((isdigit(s[left]) || islower(s[left])) && (isdigit(s[right]) || islower(s[right]))){
if (s[left]!=s[right])
return false;
else{
left++;right--;
}
}
}
return true;
}
};