9.回文數(shù)

題目地址:
回文數(shù)

1.題目描述

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

示例 1:

輸入: 121
輸出: true
示例 2:

輸入: -121
輸出: false
解釋: 從左向右讀, 為 -121 卵皂。 從右向左讀, 為 121- 肾胯。因此它不是一個回文數(shù)。
示例 3:

輸入: 10
輸出: false
解釋: 從右向左讀, 為 01 旬蟋。因此它不是一個回文數(shù)油昂。
進階:

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

2.題解

2.1.解題思路

看到那個正序和倒敘倾贰,入?yún)⑦€是整數(shù)冕碟,馬上想到可以將第七題改改拿過來直接用。
根據(jù)示例匆浙,負數(shù)不會是回文數(shù)安寺,所以只有正數(shù)會是回文數(shù)(還有0)。

2.2.第一版代碼

直接將第七題的整數(shù)反轉(zhuǎn)的代碼拿來改一改首尼,改完如下:

public boolean isPalindrome(int x) {
        if (x < 0) {
            return false;
        }
        int reverse = reverse(x);
        if (reverse !=x) {
            return false;
        }

        return true;
    }

 //整數(shù)反轉(zhuǎn)的代碼
 public  int reverse(int x) {
        if (x / 10==0) {
            return x;
        }
        long result = 0;
        for (int i = 0; i < 10; i++) {
            result=result*10+x%10;
            if (result > Integer.MAX_VALUE) {
                return 0;
            }
            x = x / 10;
            if (x==0) {
                break;
            }
        }
        return new Long(result).intValue();
    }

第一版代碼的運行結(jié)果如下:


回文數(shù)第一版.png

內(nèi)存消耗還可以挑庶,但是耗時比單純的整數(shù)反轉(zhuǎn)多了很多言秸。

2.2.第二版代碼

官方題解給的解題思路也是整數(shù)反轉(zhuǎn),不過他們給的不是把整個數(shù)都反轉(zhuǎn)完迎捺,比較result和x是否相等井仰,而是在反轉(zhuǎn)過半的時候進行判斷。
在對x做除法的過程中:

long result = 0;
result=result*10+x%10;
x = x / 10;

在這個過程中,result在不斷增大,x在不斷的減小,當(dāng)result>=x時,代表來到了入?yún)的中間點破加。比如121俱恶,中間點是2,result=21,x=1的時候范舀,代表遍歷過半合是,退出循環(huán)。

當(dāng)x==result或x/10==result時锭环,代表x是回文數(shù)聪全。返回結(jié)果。循環(huán)結(jié)束條件是x<result辅辩,所以當(dāng)x為長度為奇位數(shù)的時候难礼,x==result/10也是符合條件的。

這樣會有一點小問題玫锋,尾數(shù)為0的蛾茉,經(jīng)過while循環(huán)處理之后,反轉(zhuǎn)的數(shù)并不構(gòu)成回文數(shù)撩鹿,需要排除這種情況谦炬。
下面是完整代碼:

public static boolean isPalindrome1(int x) {
        //小于0或者是10的倍數(shù)都不符合要求,0是回文數(shù)
        if (x < 0 || (x%10==0&&x!=0)) {
            return false;
        }
        long result = 0;

        //這里仍是整數(shù)反轉(zhuǎn)的循環(huán)节沦,更改了循環(huán)退出條件键思,去掉了越界判斷
        while (x>result) {
            result=result*10+x%10;
            x = x / 10;
        }
        //循環(huán)退出的時候x<=result
        //由于處于中位的數(shù)字總是與自身相等,所以可以簡單的去掉
        return x==result||x==result/10;
    }

第二版的運行結(jié)果如下:


回文數(shù)第二版.png

emm,執(zhí)行耗時低了一點甫贯,內(nèi)存耗時多了一點吼鳞。

2.3.其他用戶提供的一個思路

還有一位用戶提供了一個思路,地址在這里:
https://leetcode-cn.com/problems/palindrome-number/solution/ji-bai-liao-99de-javayong-hu-dai-ma-you-ya-by-reed/
這位是同時首尾是否相同叫搁,如果相同赔桌,去掉首尾,再判斷下面的數(shù)字常熙,感興趣的可以去看一下纬乍。

3.總結(jié)

這道題官方預(yù)感到會有人將數(shù)字轉(zhuǎn)換為字符串碱茁,判斷字符串是否為回文串裸卫,這樣做當(dāng)然也能做,不過開銷會大很多纽竣,所以給了個提示墓贿,是否可以不將數(shù)字轉(zhuǎn)換為字符串進行求解茧泪。如果先做第七題的話,會首先想到使用整數(shù)反轉(zhuǎn)的思路來著聋袋,方便快捷队伟。

這道題同時也需要考慮邊界的問題,先將不符合的數(shù)提前返回幽勒。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嗜侮,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子啥容,更是在濱河造成了極大的恐慌锈颗,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咪惠,死亡現(xiàn)場離奇詭異击吱,居然都是意外死亡,警方通過查閱死者的電腦和手機遥昧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門覆醇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人炭臭,你說我怎么就攤上這事永脓。” “怎么了鞋仍?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵憨奸,是天一觀的道長。 經(jīng)常有香客問我凿试,道長排宰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任那婉,我火速辦了婚禮板甘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘详炬。我一直安慰自己盐类,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布呛谜。 她就那樣靜靜地躺著在跳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪隐岛。 梳的紋絲不亂的頭發(fā)上猫妙,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機與錄音聚凹,去河邊找鬼割坠。 笑死齐帚,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的彼哼。 我是一名探鬼主播对妄,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼敢朱!你這毒婦竟也來了剪菱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤拴签,失蹤者是張志新(化名)和其女友劉穎琅豆,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體篓吁,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡茫因,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了杖剪。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冻押。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖盛嘿,靈堂內(nèi)的尸體忽然破棺而出洛巢,到底是詐尸還是另有隱情,我是刑警寧澤次兆,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布稿茉,位于F島的核電站,受9級特大地震影響芥炭,放射性物質(zhì)發(fā)生泄漏漓库。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一园蝠、第九天 我趴在偏房一處隱蔽的房頂上張望渺蒿。 院中可真熱鬧,春花似錦彪薛、人聲如沸茂装。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽少态。三九已至,卻和暖如春易遣,著一層夾襖步出監(jiān)牢的瞬間彼妻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工训挡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留澳骤,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓澜薄,卻偏偏與公主長得像为肮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子肤京,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 題目描述 判斷一個整數(shù)是否是回文數(shù)颊艳。回文數(shù)是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數(shù)忘分。示例: 輸入: ...
    不要甜的紅燒肉閱讀 349評論 0 0
  • 題目: 題目地址:https://leetcode-cn.com/problems/palindrome-numb...
    MrGeekr極氪閱讀 265評論 0 0
  • 題目 第9題:回文數(shù) 判斷一個整數(shù)是否是回文數(shù)棋枕。回文數(shù)是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數(shù)妒峦。 示...
    DonLex閱讀 675評論 0 1
  • 題目描述 判斷一個整數(shù)是否是回文數(shù)重斑。回文數(shù)是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數(shù)肯骇。 示例 1: 輸...
    zhipingChen閱讀 442評論 1 2
  • 9.回文數(shù) 判斷一個整數(shù)是否是回文數(shù)窥浪。回文數(shù)是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數(shù)笛丙。 示例 1: ...
    跟著風(fēng)行走閱讀 294評論 0 1