easy!
題目描述:
給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。
說明:本題中,我們將空字串定義為有效的回文串。
示例 1:
輸入: "a man, a plan, a canal: panama"示例 2:輸出: true
輸入: "race a car"輸出: false
解題思路:
驗證回文字串是比較常見的問題,所謂回文,就是乙個正讀和反讀都一樣的字串,比如「level」或者「noon」等等就是回文串。但是這裡,加入了空格和非字母數字的字元,增加了些難度,但其實原理還是很簡單:只需要建立兩個指標,left和right, 分別從字元的開頭和結尾處開始遍歷整個字串,如果遇到非字母數字的字元就跳過,繼續往下找,直到找到下乙個字母數字或者結束遍歷,如果遇到大寫字母,就將其轉為小寫。等左右指標都找到字母數字時,比較這兩個字元,若相等,則繼續比較下面兩個分別找到的字母數字,若不相等,直接返回false,時間複雜度為o(n)。
c++解法一:
1class
solution 12}
13return
true;14
}15bool isalphanum(char &ch)
21 };
我們也可以用系統自帶的判斷是否是數母字元的判斷函式isalnum。
c++解法二:
1class
solution 12}
13return
true;14
}15 };
對於該問題的擴充套件,還有利用manacher演算法來求解最長回文字串問題,參見
leetcode125 驗證回文串
一 問題描述 給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true 示例 2 輸入 race a car 輸出 false 二 和思路 2.分...
LeetCode125驗證回文數
給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true示例 2 輸入 race a car 輸出 falseclass solution def...
leetcode 125 驗證回文串
給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true示例 2 輸入 race a car 輸出 false注意讀題,題目中說了只考慮字母和數字...