回文數(shù)(21-02-24)

問題描述

給你一個(gè)整數(shù) x ,如果 x 是一個(gè)回文整數(shù)彤守,返回 true 毯侦;否則,返回 false 具垫。
回文數(shù)是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數(shù)侈离。例如,121 是回文筝蚕,而 123 不是卦碾。
示例 1:

輸入:x = 121
輸出:true

示例 2:

輸入:x = -121
輸出:false
解釋:從左向右讀, 為 -121 。 從右向左讀, 為 121- 起宽。因此它不是一個(gè)回文數(shù)洲胖。

示例 3:

輸入:x = 10
輸出:false
解釋:從右向左讀, 為 01 。因此它不是一個(gè)回文數(shù)坯沪。

示例 4:

輸入:x = -101
輸出:false

提示:
-231 <= x <= 231 - 1

解題思路

1绿映、數(shù)組從左到右,從右到左腐晾,同時(shí)比較叉弦,如果數(shù)值不同返回false

第一種

class Solution {
    public boolean isPalindrome(int x) {
       char []arr=String.valueOf(x).toCharArray();
       int len = arr.length;
       if(len == 1)return true;
       int left = 0, right= len-1;
       boolean flag = true;
       while(left<=right){
            if(arr[left]!=arr[right]){
                flag = false;
              
            }
            left++;
            right--;
       }
       return flag;
    }
}

第二種,結(jié)合其他人優(yōu)秀的解題思路藻糖,(不將整數(shù)轉(zhuǎn)為字符串來解決)這樣耗費(fèi)時(shí)間和內(nèi)存淹冰,我第一種方法運(yùn)行結(jié)果是10ms

解題思路

1、首先巨柒,我們應(yīng)該處理一些臨界情況樱拴。所有負(fù)數(shù)都不可能是回文凝颇,例如:-123 不是回文,因?yàn)?- 不等于 3疹鳄。所以我們可以對(duì)所有負(fù)數(shù)返回 false拧略。除了 0 以外,所有個(gè)位是 0 的數(shù)字不可能是回文瘪弓,因?yàn)樽罡呶徊坏扔?0垫蛆。所以我們可以對(duì)所有大于 0 且個(gè)位是 0 的數(shù)字返回 false。
現(xiàn)在腺怯,讓我們來考慮如何反轉(zhuǎn)后半部分的數(shù)字袱饭。
2、對(duì)于數(shù)字 1221呛占,如果執(zhí)行 1221 % 10虑乖,我們將得到最后一位數(shù)字 1,要得到倒數(shù)第二位數(shù)字晾虑,我們可以先通過除以 10 把最后一位數(shù)字從 1221 中移除疹味,1221 / 10 = 122,再求出上一步結(jié)果除以 10 的余數(shù)帜篇,122 % 10 = 2糙捺,就可以得到倒數(shù)第二位數(shù)字。如果我們把最后一位數(shù)字乘以 10笙隙,再加上倒數(shù)第二位數(shù)字洪灯,1 * 10 + 2 = 12,就得到了我們想要的反轉(zhuǎn)后的數(shù)字竟痰。如果繼續(xù)這個(gè)過程签钩,我們將得到更多位數(shù)的反轉(zhuǎn)數(shù)字。
3坏快、現(xiàn)在的問題是铅檩,我們?nèi)绾沃婪崔D(zhuǎn)數(shù)字的位數(shù)已經(jīng)達(dá)到原始數(shù)字位數(shù)的一半?
由于整個(gè)過程我們不斷將原始數(shù)字除以 10假消,然后給反轉(zhuǎn)后的數(shù)字乘上 10柠并,所以岭接,當(dāng)原始數(shù)字小于或等于反轉(zhuǎn)后的數(shù)字時(shí)富拗,就意味著我們已經(jīng)處理了一半位數(shù)的數(shù)字了。


9_fig1.png
class Solution {
    public boolean isPalindrome(int x) {
        // 特殊情況:
        // 如上所述鸣戴,當(dāng) x < 0 時(shí)啃沪,x 不是回文數(shù)。
        // 同樣地窄锅,如果數(shù)字的最后一位是 0创千,為了使該數(shù)字為回文缰雇,
        // 則其第一位數(shù)字也應(yīng)該是 0
        // 只有 0 滿足這一屬性
        if (x < 0 || (x % 10 == 0 && x != 0)) {
            return false;
        }

        int revertedNumber = 0;
        while (x > revertedNumber) {
            revertedNumber = revertedNumber * 10 + x % 10;
            x /= 10;
        }

        // 當(dāng)數(shù)字長度為奇數(shù)時(shí),我們可以通過 revertedNumber/10 去除處于中位的數(shù)字追驴。
        // 例如械哟,當(dāng)輸入為 12321 時(shí),在 while 循環(huán)的末尾我們可以得到 x = 12殿雪,revertedNumber = 123暇咆,
        // 由于處于中位的數(shù)字不影響回文(它總是與自己相等),所以我們可以簡單地將其去除丙曙。
        //偶數(shù)x == revertedNumber   奇數(shù) x == revertedNumber / 10
        return x == revertedNumber || x == revertedNumber / 10;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末爸业,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子亏镰,更是在濱河造成了極大的恐慌扯旷,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件索抓,死亡現(xiàn)場(chǎng)離奇詭異钧忽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)逼肯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門惰瓜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人汉矿,你說我怎么就攤上這事崎坊。” “怎么了洲拇?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵奈揍,是天一觀的道長。 經(jīng)常有香客問我赋续,道長男翰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任纽乱,我火速辦了婚禮蛾绎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鸦列。我一直安慰自己租冠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布薯嗤。 她就那樣靜靜地躺著顽爹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪骆姐。 梳的紋絲不亂的頭發(fā)上镜粤,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天捏题,我揣著相機(jī)與錄音,去河邊找鬼肉渴。 笑死公荧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的同规。 我是一名探鬼主播稚矿,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼捻浦!你這毒婦竟也來了晤揣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤朱灿,失蹤者是張志新(化名)和其女友劉穎昧识,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盗扒,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡跪楞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了侣灶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片甸祭。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖褥影,靈堂內(nèi)的尸體忽然破棺而出池户,到底是詐尸還是另有隱情,我是刑警寧澤凡怎,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布校焦,位于F島的核電站,受9級(jí)特大地震影響统倒,放射性物質(zhì)發(fā)生泄漏寨典。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一房匆、第九天 我趴在偏房一處隱蔽的房頂上張望耸成。 院中可真熱鬧,春花似錦浴鸿、人聲如沸井氢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽毙沾。三九已至,卻和暖如春宠页,著一層夾襖步出監(jiān)牢的瞬間左胞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國打工举户, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留烤宙,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓俭嘁,卻偏偏與公主長得像躺枕,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子供填,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

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

  • 判斷一個(gè)整數(shù)是否是回文數(shù)拐云。回文數(shù)是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數(shù)近她。 示例 1: 輸入: 12...
    bocsoft閱讀 1,229評(píng)論 0 0
  • 題目 第9題:回文數(shù) 判斷一個(gè)整數(shù)是否是回文數(shù)叉瘩。回文數(shù)是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數(shù)粘捎。 示...
    DonLex閱讀 679評(píng)論 0 1
  • 方法:反轉(zhuǎn)一半數(shù)字 思路 映入腦海的第一個(gè)想法是將數(shù)字轉(zhuǎn)換為字符串薇缅,并檢查字符串是否為回文。但是攒磨,這需要額外的非常...
    zzpwestlife閱讀 325評(píng)論 0 2
  • 判斷一個(gè)整數(shù)是否是回文數(shù)泳桦。回文數(shù)是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數(shù)娩缰。 示例: 輸入: 121輸...
    WEB耳閱讀 212評(píng)論 0 1
  • 今天感恩節(jié)哎灸撰,感謝一直在我身邊的親朋好友。感恩相遇拼坎!感恩不離不棄梧奢。 中午開了第一次的黨會(huì),身份的轉(zhuǎn)變要...
    迷月閃星情閱讀 10,562評(píng)論 0 11