題目:
題目描述 :
給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。
說明:本題中,我們將空字串定義為有效的回文串。
示例 1:
輸入: "a man, a plan, a canal: panama"
輸出: true
示例 2:
輸入: "race a car"
輸出: false
思路:先把字母都轉換為小寫,然後用雙指標,乙個從開頭開始,乙個從結尾開始。遇到不符合條件的字元,自加1(開頭指標) 或者自減1(結尾指標)。然後再判斷兩個指標對應的值是否相等。兩種方法思路一樣。第二種比較節省記憶體還有比較規範吧。
//自己寫的方法。
class solution
}//無需額外空間。直接雙指標解決
class solution
if (!((aft >= 'a' && aft <= 'z') || (aft >= '0' && aft <= '9')))
if (pre != aft)
startindex++;
endindex--;
}return true;}}
//雙指標解決。且不需要進行字串大小寫轉換。
class solution else if(!isalphanum(s.charat(right)))else if((s.charat(left) + 32 - 'a') % 32 != (s.charat(right) + 32 - 'a') % 32)else
}return true;
}private boolean isalphanum(char c)
}
反思:剛才重新做了一遍,發現第二種方法的else if((s.charat(left) + 32 - 'a') % 32 != (s.charat(right) + 32 - 'a') % 這句很妙。直接能跳過大小寫字母的處理。 Leetcode題解之字串(8) 報數
題目 題目描述 1.1 2.11 3.21 4.1211 5.111221 6.312211 7.13112221 8.1113213211 9.311312111312211被讀作 one 1 乙個一 即11。11被讀作 two 1s 兩個一 即21。21被讀作 one 2 one 1 乙個二 乙...
Leetcode題解之字串(2)顛倒整數
題目 題目描述 顛倒整數 給定乙個 32 位有符號整數,將整數中的數字進行反轉。示例 1 輸入 123輸出 321示例 2 輸入 123輸出 321示例 3 輸入 120輸出 21注意 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 2 31,2 31 1 根據這個假設,如果反轉後的整數溢...
LeetCode初級演算法 字串 5
題目 驗證回文串 給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true 示例 2 輸入 race a car 輸出 false c語言解題 b...