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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

3628、验证回文串

發(fā)布時間:2023/12/14 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 3628、验证回文串 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

給定一個字符串,驗證它是否是回文串,只考慮字母和數(shù)字字符,可以忽略字母的大小寫。

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

??

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

著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

package?cn.fansunion.leecode.isNumber;

/**

?* 驗證回文串

?* 給定一個字符串,驗證它是否是回文串,只考慮字母和數(shù)字字符,可以忽略字母的大小寫。

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

力扣

?* @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" 不是回文串*/

????/**

?????* 從字符串中找出“字母數(shù)字”的字符串,復用之前一道題的方法。換湯不換藥,新瓶裝舊酒。

?????* @param s

?????* @return

?????*/

????public?boolean?isPalindrome(String s) {

????????if(s==null||s.length()==0) {

????????????return?false;

????????}

????????//cn.fansunion.leecode.isNumber.PalindromeNumber.isPalindromeStr(int)

????????//整數(shù)版回文數(shù)的進階,同一個問題,稍微有點區(qū)別。相同點,都需要對輸入做一點處理

????????String newStr=collectLetterDigit(s);

????????return?isPalindromeIntByStr(newStr);

????}

?????

????/**

?????* 從一個字符串中找出為字母或數(shù)字的字符,返回一個新的字符串,比如:“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();

????}

????//根據(jù)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;

????}

?????

????/**

?????* 僅供參考用:是否為回文數(shù):number->str 進階:你能不將整數(shù)轉(zhuǎn)為字符串來解決這個問題嗎?

?????* @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;

????}

}

執(zhí)行結(jié)果:通過

顯示詳情

添加備注

執(zhí)行用時:4?ms, 在所有 Java 提交中擊敗了42.91%的用戶

內(nèi)存消耗: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"));

????}

}

總結(jié)

以上是生活随笔為你收集整理的3628、验证回文串的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。