3628、验证回文串
| 給定一個字符串,驗證它是否是回文串,只考慮字母和數字字符,可以忽略字母的大小寫。 說明:本題中,我們將空字符串定義為有效的回文串。 ?? 示例?1: 輸入:?"A man, a plan, a canal: Panama" 輸出:?true 解釋:"amanaplanacanalpanama"?是回文串 示例?2: 輸入:?"race a car" 輸出:?false 解釋:"raceacar"?不是回文串 ?? 提示: 1?<= s.length <=?2?*?105 字符串 s 由 ASCII 字符組成 來源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/valid-palindrome 著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。 |
| package?cn.fansunion.leecode.isNumber; /** ?* 驗證回文串 ?* 給定一個字符串,驗證它是否是回文串,只考慮字母和數字字符,可以忽略字母的大小寫。 說明:本題中,我們將空字符串定義為有效的回文串。 力扣 ?* @author wen.lei@brgroup.com ?* ?* 2022-2-18 ?*/ public?class?ValidPalindrome { ????/* 示例 1: ????? ????????輸入: "A man, a plan, a canal: Panama" ????????輸出: true ????????解釋:"amanaplanacanalpanama" 是回文串 ????????示例 2: ????? ????????輸入: "race a car" ????????輸出: false ????????解釋:"raceacar" 不是回文串*/ ????/** ?????* 從字符串中找出“字母數字”的字符串,復用之前一道題的方法。換湯不換藥,新瓶裝舊酒。 ?????* @param s ?????* @return ?????*/ ????public?boolean?isPalindrome(String s) { ????????if(s==null||s.length()==0) { ????????????return?false; ????????} ????????//cn.fansunion.leecode.isNumber.PalindromeNumber.isPalindromeStr(int) ????????//整數版回文數的進階,同一個問題,稍微有點區別。相同點,都需要對輸入做一點處理 ????????String newStr=collectLetterDigit(s); ????????return?isPalindromeIntByStr(newStr); ????} ????? ????/** ?????* 從一個字符串中找出為字母或數字的字符,返回一個新的字符串,比如:“abc--]1 23”>"abc123" ?????* @param s ?????* @return ?????*/ ????private?String collectLetterDigit(String s) { ????????StringBuilder sb =?new?StringBuilder(); ????????for(char?ch:s.toLowerCase().toCharArray()) { ????????????if(Character.isLetterOrDigit(ch)) { ????????????????sb.append(ch); ????????????} ????????} ????????return?sb.toString(); ????} ????//根據isPalindromeIntByStr,簡單處理 ????public?boolean?isPalindromeIntByStr(String numStr) { ????????//左右比較,雙指針 ????????for?(int?start =?0, end = numStr.length() -?1; start < end; start++, end--) { ????????????if?(numStr.charAt(start)!=numStr.charAt(end)) { ????????????????return?false; ????????????} ????????} ????????return?true; ????} ????? ????/** ?????* 僅供參考用:是否為回文數:number->str 進階:你能不將整數轉為字符串來解決這個問題嗎? ?????* @param x ?????* @return ?????*/ ????public?boolean?isPalindromeIntByStr(int?x) { ????????if?(x <?0) { ????????????return?false; ????????} ????????String numStr = String.valueOf(x); ????????//左右比較,雙指針 ????????for?(int?start =?0, end = numStr.length() -?1; start < end; start++, end--) { ????????????if?(numStr.charAt(start)!=numStr.charAt(end)) { ????????????????return?false; ????????????} ????????} ????????return?true; ????} } |
| 執行結果:通過 顯示詳情 添加備注 執行用時:4?ms, 在所有 Java 提交中擊敗了42.91%的用戶 內存消耗:41?MB, 在所有 Java 提交中擊敗了17.97%的用戶 通過測試用例:480?/?480 炫耀一下: |
| package?test.leecode.isNumber; import?org.junit.Assert; import?org.junit.Test; import?cn.fansunion.leecode.isNumber.ValidPalindrome; /** ?* @author wen.lei@brgroup.com ?* ?* 2022-2-19 ?*/ public?class?ValidPalindromeTest { ????? ????@Test ????public?void?test() { ????????//isPalindrome ????????ValidPalindrome vp =?new?ValidPalindrome(); ????????Assert.assertTrue(vp.isPalindrome("A man, a plan, a canal: Panama")); ????????Assert.assertTrue(vp.isPalindrome("abcd-dc-ba")); ????????Assert.assertFalse(vp.isPalindrome("race a car")); ????????Assert.assertFalse(vp.isPalindrome("abcd-dc-ba1")); ????} } |
總結
以上是生活随笔為你收集整理的3628、验证回文串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html页面改成wap页面,wap网页怎
- 下一篇: JavaIO流实现文件传输