Leetcode題解之字串(5) 驗證回文字串

2021-08-31 18:59:54 字數 1069 閱讀 1653

題目:

題目描述 :

給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。

說明:本題中,我們將空字串定義為有效的回文串。

示例 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...