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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java回文数算法for_【Java】【每日算法/刷穿 LeetCode】9. 回文数(简单)

發(fā)布時間:2025/3/21 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java回文数算法for_【Java】【每日算法/刷穿 LeetCode】9. 回文数(简单) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

首頁

專欄

java

文章詳情

0

【每日算法/刷穿 LeetCode】9. 回文數(shù)(簡單)

宮水三葉發(fā)布于 今天 15:30

題目描述

判斷一個整數(shù)是否是回文數(shù)。回文數(shù)是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數(shù)。

示例 1:

輸入: 121

輸出: true

示例 2:

輸入: -121

輸出: false

解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是一個回文數(shù)。

示例 3:

輸入: 10

輸出: false

解釋: 從右向左讀, 為 01 。因此它不是一個回文數(shù)。

進階:

你能不將整數(shù)轉為字符串來解決這個問題嗎?

字符串解法

既然進階里提到了不能用字符串來解決,那么三葉就提供一下吧。

class Solution {

public boolean isPalindrome(int x) {

String s = String.valueOf(x);

StringBuilder sb = new StringBuilder(s);

sb.reverse();

return sb.toString().equals(s);

}

}

時間復雜度:數(shù)字 n 的位數(shù),數(shù)字大約有 log10(n) 位,翻轉操作要執(zhí)行循環(huán)。復雜度為 O(log10(n))

空間復雜度:使用了字符串作為存儲。復雜度為 O(log10(n))

非字符串解法(完全翻轉)

原數(shù)值 x 的不超過 int 的表示范圍,但翻轉后的值會有溢出的風險,所以這里使用 long 進行接收,最后對比兩者是否相等。

class Solution {

public boolean isPalindrome(int x) {

if (x < 0) return false;

long ans = 0;

int t = x;

while (x > 0) {

ans = ans * 10 + x % 10;

x /= 10;

}

return ans - t == 0;

}

}

時間復雜度:數(shù)字 n 的位數(shù),數(shù)字大約有 $\log{10}{n}$ 位。復雜度為 $\log{10}{n}$

空間復雜度:$O(1)$

非字符串解法(部分翻轉)

如果在進階中增加一個我們熟悉的要求:環(huán)境中只能存儲得下 32 位的有符號整數(shù)。

那么我們就連 long 也不能用了,這時候要充分利用「回文」的特性:前半部分和后半部分(翻轉)相等。

這里的前半部分和后半部分(翻轉)需要分情況討論:

回文長度為奇數(shù):回文中心是一個獨立的數(shù),即 忽略回文中心后,前半部分 == 后半部分(翻轉)。如 1234321 回文串

回文長度為偶數(shù):回文中心在中間兩個數(shù)中間,即 前半部分 == 后半部分(翻轉)。如 123321

class Solution {

public boolean isPalindrome(int x) {

// 對于 負數(shù) 和 x0、x00、x000 格式的數(shù),直接返回 flase

if (x < 0 || (x % 10 == 0 && x != 0)) return false;

int t = 0;

while (x > t) {

t = t * 10 + x % 10;

x /= 10;

}

// 回文長度的兩種情況:直接比較 & 忽略中心點(t 的最后一位)進行比較

return x == t || x == t / 10;

}

}

時間復雜度:數(shù)字 n 的位數(shù),數(shù)字大約有 $\log{10}{n}$ 位。復雜度為 $\log{10}{n}$

空間復雜度:$O(1)$

最后

這是我們「刷穿 LeetCode」系列文章的第 No.9 篇,系列開始于 2021/01/01,截止于起始日 LeetCode 上共有 1916 道題目,部分是有鎖題,我們將先將所有不帶鎖的題目刷完。

在這個系列文章里面,除了講解解題思路以外,還會盡可能給出最為簡潔的代碼。如果涉及通解還會相應的代碼模板。

由于 LeetCode 的題目隨著周賽 & 雙周賽不斷增加,為了方便我們統(tǒng)計進度,我們將按照系列起始時的總題數(shù)作為分母,完成的題目作為分子,進行進度計算。當前進度為 9/1916 。

為了方便各位同學能夠電腦上進行調試和提交代碼,我建立了相關的倉庫:Github 地址 & Gitee 地址。

在倉庫地址里,你可以看到系列文章的題解鏈接、系列文章的相應代碼、LeetCode 原題鏈接和一些其他的優(yōu)選題解。

算法與數(shù)據(jù)結構

LeetCode題解

算法面試

面試java算法leetcode數(shù)據(jù)結構與算法

閱讀 34發(fā)布于 今天 15:30

贊收藏

分享

本作品系原創(chuàng),采用《署名-非商業(yè)性使用-禁止演繹 4.0 國際》許可協(xié)議

刷穿LeetCode

公眾號:「宮水三葉的刷題日記 」。每天十分鐘,快樂學算法 ~

關注專欄

宮水三葉

關注公眾號:「宮水三葉的刷題日記 」。

1聲望

0粉絲

關注作者

0 條評論

得票時間

提交評論

宮水三葉

關注公眾號:「宮水三葉的刷題日記 」。

1聲望

0粉絲

關注作者

宣傳欄

目錄

題目描述

判斷一個整數(shù)是否是回文數(shù)。回文數(shù)是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數(shù)。

示例 1:

輸入: 121

輸出: true

示例 2:

輸入: -121

輸出: false

解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是一個回文數(shù)。

示例 3:

輸入: 10

輸出: false

解釋: 從右向左讀, 為 01 。因此它不是一個回文數(shù)。

進階:

你能不將整數(shù)轉為字符串來解決這個問題嗎?

字符串解法

既然進階里提到了不能用字符串來解決,那么三葉就提供一下吧。

class Solution {

public boolean isPalindrome(int x) {

String s = String.valueOf(x);

StringBuilder sb = new StringBuilder(s);

sb.reverse();

return sb.toString().equals(s);

}

}

時間復雜度:數(shù)字 n 的位數(shù),數(shù)字大約有 log10(n) 位,翻轉操作要執(zhí)行循環(huán)。復雜度為 O(log10(n))

空間復雜度:使用了字符串作為存儲。復雜度為 O(log10(n))

非字符串解法(完全翻轉)

原數(shù)值 x 的不超過 int 的表示范圍,但翻轉后的值會有溢出的風險,所以這里使用 long 進行接收,最后對比兩者是否相等。

class Solution {

public boolean isPalindrome(int x) {

if (x < 0) return false;

long ans = 0;

int t = x;

while (x > 0) {

ans = ans * 10 + x % 10;

x /= 10;

}

return ans - t == 0;

}

}

時間復雜度:數(shù)字 n 的位數(shù),數(shù)字大約有 $\log{10}{n}$ 位。復雜度為 $\log{10}{n}$

空間復雜度:$O(1)$

非字符串解法(部分翻轉)

如果在進階中增加一個我們熟悉的要求:環(huán)境中只能存儲得下 32 位的有符號整數(shù)。

那么我們就連 long 也不能用了,這時候要充分利用「回文」的特性:前半部分和后半部分(翻轉)相等。

這里的前半部分和后半部分(翻轉)需要分情況討論:

回文長度為奇數(shù):回文中心是一個獨立的數(shù),即 忽略回文中心后,前半部分 == 后半部分(翻轉)。如 1234321 回文串

回文長度為偶數(shù):回文中心在中間兩個數(shù)中間,即 前半部分 == 后半部分(翻轉)。如 123321

class Solution {

public boolean isPalindrome(int x) {

// 對于 負數(shù) 和 x0、x00、x000 格式的數(shù),直接返回 flase

if (x < 0 || (x % 10 == 0 && x != 0)) return false;

int t = 0;

while (x > t) {

t = t * 10 + x % 10;

x /= 10;

}

// 回文長度的兩種情況:直接比較 & 忽略中心點(t 的最后一位)進行比較

return x == t || x == t / 10;

}

}

時間復雜度:數(shù)字 n 的位數(shù),數(shù)字大約有 $\log{10}{n}$ 位。復雜度為 $\log{10}{n}$

空間復雜度:$O(1)$

最后

這是我們「刷穿 LeetCode」系列文章的第 No.9 篇,系列開始于 2021/01/01,截止于起始日 LeetCode 上共有 1916 道題目,部分是有鎖題,我們將先將所有不帶鎖的題目刷完。

在這個系列文章里面,除了講解解題思路以外,還會盡可能給出最為簡潔的代碼。如果涉及通解還會相應的代碼模板。

由于 LeetCode 的題目隨著周賽 & 雙周賽不斷增加,為了方便我們統(tǒng)計進度,我們將按照系列起始時的總題數(shù)作為分母,完成的題目作為分子,進行進度計算。當前進度為 9/1916 。

為了方便各位同學能夠電腦上進行調試和提交代碼,我建立了相關的倉庫:Github 地址 & Gitee 地址。

在倉庫地址里,你可以看到系列文章的題解鏈接、系列文章的相應代碼、LeetCode 原題鏈接和一些其他的優(yōu)選題解。

算法與數(shù)據(jù)結構

LeetCode題解

算法面試

《新程序員》:云原生和全面數(shù)字化實踐50位技術專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的java回文数算法for_【Java】【每日算法/刷穿 LeetCode】9. 回文数(简单)的全部內容,希望文章能夠幫你解決所遇到的問題。

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