每日一題--LeetCode 125 (驗證迴文串)java
阿新 • • 發佈:2018-11-09
題目描述:
解題思路:先將特殊情況考慮,比如字串為空或者字串只有一個字元,然後可以將字串中的字母都轉化為大寫或小寫。自己編寫一個方法判斷該字元是否為數字字元或者為字母,再使用左右指標向中間掃描,當左右字元都為字母或數字時判斷二者是否相等,若相等繼續迴圈判斷,若不相等直接返回false。
程式碼實現如下:
class Solution { public boolean isPalindrome(String s) { //當字串為空或者只有一個字元時,返回true if(s.length()==0||s.length()==1){ return true; } //將字串中的字母全部變成大寫字母,方便比較判斷 String str=s.toUpperCase(); int i=0,j=str.length()-1; while(i<j){ //尋找字串中左邊的數字字元或字母 while(i<j&&!isNumOr(str.charAt(i))){ i++; } //尋找字串右邊的數字字元或字母 while(i<j&&!isNumOr(str.charAt(j))){ j--; } //若左右字元不相等時,返回false if((i<j)&&(str.charAt(i)!=str.charAt(j))){ return false; } i++; j--; } return true; } //判斷該字元是否是數字字元或字母 boolean isNumOr(char c){ if(c>='A'&&c<='Z'){ return true; }else if(c>='0'&&c<='9'){ return true; } return false; } }