leetcode 高薪_LeetCode 第 125 号问题:验证回文串
生活随笔
收集整理的這篇文章主要介紹了
leetcode 高薪_LeetCode 第 125 号问题:验证回文串
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文首發于公眾號「五分鐘學算法」,是圖解 LeetCode 系列文章之一。
個人網站:https://www.cxyxiaowu.com
個人網站:https://www.cxyxiaowu.com
題目來源于 LeetCode 第 125 號問題:驗證回文串。這道題目是 初級程序員 在面試的時候經常遇到的一道算法題,而且面試官喜歡面試者手寫!
題目描述
給定一個字符串,驗證它是否是回文串,只考慮字母和數字字符,可以忽略字母的大小寫。
說明:本題中,我們將空字符串定義為有效的回文串。
示例 1:
輸入: "A man, a plan, a canal: Panama" 輸出: true示例 2:
輸入: "race a car" 輸出: false題目解析
先理解一個概念:所謂回文,就是一個正讀和反讀都一樣的字符串。
先假設是驗證單詞 level 是否是回文字符串,通過概念涉及到 正 與 反 ,那么很容易想到使用雙指針,從字符的開頭和結尾處開始遍歷整個字符串,相同則繼續向前尋找,不同則直接返回 false。
而這里與單獨驗證一個單詞是否是回文字符串有所區別的是加入了 空格 與 非字母數字的字符,但實際上的做法一樣的:
一開始先建立兩個指針,left 和 right , 讓它們分別從字符的開頭和結尾處開始遍歷整個字符串。
如果遇到非字母數字的字符就跳過,繼續往下找,直到找到下一個字母數字或者結束遍歷,如果遇到大寫字母,就將其轉為小寫。
當左右指針都找到字母數字時,可以進行比較的時候,比較這兩個字符,如果相等,則兩個指針向它們的前進方向挪動,然后繼續比較下面兩個分別找到的字母數字,若不相等,直接返回 false。
動畫描述
代碼實現
注:isLetterOrDigit 方法確定指定的字符是否為字母或數字。
class Solution {public boolean isPalindrome(String s) {if(s.length() == 0)return true;int l = 0, r = s.length() - 1;while(l < r){//確定指定的字符是否為字母或數字if(!Character.isLetterOrDigit(s.charAt(l))){l++;}else if(!Character.isLetterOrDigit(s.charAt(r))){r--;}else{if(Character.toLowerCase(s.charAt(l)) != Character.toLowerCase(s.charAt(r)))return false;l++;r--;} }return true;} }總結
以上是生活随笔為你收集整理的leetcode 高薪_LeetCode 第 125 号问题:验证回文串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python的GUI编程和tkinter
- 下一篇: Express接口案例 使用jsonwe