Leetcode 125. 验证回文串 解题思路及C++实现
生活随笔
收集整理的這篇文章主要介紹了
Leetcode 125. 验证回文串 解题思路及C++实现
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
解題思路:
利用頭尾雙指針:i ,j 。
需要判斷每一個(gè)字符是否為字母或數(shù)字,c++中對(duì)應(yīng)的函數(shù)為 isalnum,如果不是字母或數(shù)字,返回0。
c++中判斷大小寫字母字符的函數(shù)是 isalpha,是大寫返回1,是小寫返回2,不是英文字符返回0。
其實(shí),在一開(kāi)始可以用c++中的transform 函數(shù),將輸入字符串 s 中的字母都轉(zhuǎn)為小寫。
?
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]是不是字母或數(shù)字if(!isalnum(s[i])){i++;continue;}if(!isalnum(s[j])){j--;continue;}//s[i] s[j]都是字母或者數(shù)字了int n1 = isalpha(s[i]);int n2 = isalpha(s[j]);//如果其中一個(gè)是數(shù)字,直接返回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;} };?
?
總結(jié)
以上是生活随笔為你收集整理的Leetcode 125. 验证回文串 解题思路及C++实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Leetcode 279. 完全平方数
- 下一篇: Leetcode 234. 回文链表 解