示例 1:輸入:"a man, a plan, a canal: panama"輸出:true
示例 2:2.1 思路分析輸入:"race a car"輸出:false
遍歷字串,將字串中的數字,大小寫字母一律轉換成大寫字母,儲存到乙個新的字串中;
對這個新的字串反轉,比較這兩個字串是否相同即可;
在**實現2中,我們通過使用相關api對**實現1進行簡化;
2.2 **實現1
class solution else if(s.charat(i) >= 'a' && s.charat(i) <= 'z') else if(s.charat(i) >= 'a' && s.charat(i) <= 'z')
}string s1 = sb.tostring();
string s2 = new stringbuilder(s1).reverse().tostring();
return s1.equals(s2);
}}
2.3 **實現2
class solution
}string s1 = new stringbuilder(sb).reverse().tostring();
string s2 = sb.tostring();
return s1.equals(s2);
}}
2.4 複雜度分析
3.1 思路分析
如方法2中所說,若串非空,我們得到只含有字母及數字的字串後,要驗證該字串是否為回文串;
採用雙指標,分別指向字串的首尾,並向中間靠攏,當兩個指標相遇或者相越過時,即可判斷為回文串;
3.2 **實現
class solution
}s = sb.tostring();
int begin = 0, end = s.length() - 1;
while(begin < end) else
}return true;
}}
3.3 複雜度分析
4.1 思路分析
在方法2的基礎上,我們可以原地操作,即將雙指標在原字串上遍歷,需要注意的是指標移動時,要略過非數字及非字母字元;
4.2 **實現
class solution
while(begin < end && !character.isletterordigit(s.charat(end)))
if(character.touppercase(s.charat(begin)) !=
character.touppercase(s.charat(end)))
begin++;
end--;
}return true;
}}
4.3 複雜度分析 驗證回文串
給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true示例 2 輸入 race a car 輸出 false個人ac答案 我發現我現在越來越謹慎...
驗證回文串
驗證回文串 題幹 給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true示例 2 輸入 race a car 輸出 false解題思路分析以及 ...
驗證回文串
驗證回文串 題目描述 給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true 示例 2 輸入 race a car 輸出 false 分析 最簡...