Leetcode 125. 验证回文串 解题思路及C++实现
生活随笔
收集整理的這篇文章主要介紹了
Leetcode 125. 验证回文串 解题思路及C++实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
解題思路:
利用頭尾雙指針:i ,j 。
需要判斷每一個字符是否為字母或數字,c++中對應的函數為 isalnum,如果不是字母或數字,返回0。
c++中判斷大小寫字母字符的函數是 isalpha,是大寫返回1,是小寫返回2,不是英文字符返回0。
其實,在一開始可以用c++中的transform 函數,將輸入字符串 s 中的字母都轉為小寫。
?
class Solution { public:bool isPalindrome(string s) {if(s == "" || s.length() == 1) return true;int i = 0; int j = s.length() - 1;while(i < j){// 先判斷s[i] s[j]是不是字母或數字if(!isalnum(s[i])){i++;continue;}if(!isalnum(s[j])){j--;continue;}//s[i] s[j]都是字母或者數字了int n1 = isalpha(s[i]);int n2 = isalpha(s[j]);//如果其中一個是數字,直接返回falseif(n1 == 0 && n2 > 0 || n1 > 0 && n2 == 0) return false;else if(n1 == 0 && n2 == 0){if(s[i] != s[j]) return false;else{i++;j--;}}else if(tolower(s[i]) != tolower(s[j])){return false;}else{i++;j--;}}return true;} };?
?
總結
以上是生活随笔為你收集整理的Leetcode 125. 验证回文串 解题思路及C++实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode 279. 完全平方数
- 下一篇: Leetcode 234. 回文链表 解