日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

leetcode 高薪_LeetCode 第 125 号问题:验证回文串

發布時間:2024/7/5 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode 高薪_LeetCode 第 125 号问题:验证回文串 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文首發于公眾號「五分鐘學算法」,是圖解 LeetCode 系列文章之一。
個人網站: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 号问题:验证回文串的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。