[簡單]LeetCode.003 回文數 javascript

判斷一個整數是否是回文數≤蹋回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數寂恬。

示例:

輸入: 121
輸出: true
輸入: -121
輸出: false
輸入: 10
輸出: false

方法一:最耿直的方法,沒有之一

轉化成字符串處理结啼,實現原理掠剑,將輸入轉換成字符串,翻轉后和輸入比較郊愧。要注意的是數字邊界問題朴译,即數字最大不能超過2^31,并非此題重點属铁,故不考慮

image.png

翠花上代碼

/**
 * @param {number} x
 * @return {boolean}
 */
var isPalindrome = function(x) {
    if(x < 0 || (x % 10 == 0 && x != 0)) return false
    let temp = Number(String(x).split('').reverse().join(''))
    if(temp === x) {
      return true
    } else {
      return false
    }
};

方法二:最文藝的方法眠寿,純數學方法

通過取模的方式將數字反轉,例如12焦蘑,取模 12%10 = 2盯拱,即可以得到數字的最后一問;判斷回文數我們只需要反轉一半,如何反轉后半部分的數字狡逢?對于數字 1221宁舰,如果執(zhí)行 1221 % 10,我們將得到最后一位數字 1奢浑,要得到倒數第二位數字蛮艰,我們可以先通過除以 10 把最后一位數字從 1221 中移除,1221 / 10 = 122雀彼,再求出上一步結果除以 10 的余數壤蚜,122 % 10 = 2,就可以得到倒數第二位數字徊哑。如果我們把最后一位數字乘以 10袜刷,再加上倒數第二位數字,1 * 10 + 2 = 12莺丑,就得到了我們想要的反轉后的數字著蟹。如果繼續(xù)這個過程,我們將得到更多位數的反轉數字窒盐。

image.png

(小聲BB:最好成績是276ms草则,擊敗96%對手)

翠花上代碼

/**
 * @param {number} x
 * @return {boolean}
 */
var isPalindrome = function(x) {
    // 特殊情況:
    // 如上所述,當 x < 0 時蟹漓,x 不是回文數炕横。
    // 同樣地,如果數字的最后一位是 0葡粒,為了使該數字為回文份殿,
    // 則其第一位數字也應該是 0
    // 只有 0 滿足這一屬性
    if(x < 0 || (x % 10 == 0 && x != 0)) {
        return false;
    }

    let revertedNumber = 0;
    while(x > revertedNumber) {
        revertedNumber = revertedNumber * 10 + x % 10;
        x = Math.floor(x/10);
    }
    // 當數字長度為奇數時,我們可以通過 revertedNumber/10 去除處于中位的數字嗽交。
    // 例如卿嘲,當輸入為 12321 時,在 while 循環(huán)的末尾我們可以得到 x = 12夫壁,revertedNumber = 123拾枣,
    // 由于處于中位的數字不影響回文(它總是與自己相等),所以我們可以簡單地將其去除盒让。
    return x === revertedNumber || x === Math.floor(revertedNumber/10);
}
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末梅肤,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子邑茄,更是在濱河造成了極大的恐慌姨蝴,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肺缕,死亡現場離奇詭異左医,居然都是意外死亡授帕,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門浮梢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來跛十,“玉大人,你說我怎么就攤上這事秕硝∨计鳎” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵缝裤,是天一觀的道長。 經常有香客問我颊郎,道長憋飞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任姆吭,我火速辦了婚禮榛做,結果婚禮上,老公的妹妹穿的比我還像新娘内狸。我一直安慰自己检眯,他們只是感情好,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布昆淡。 她就那樣靜靜地躺著锰瘸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪昂灵。 梳的紋絲不亂的頭發(fā)上避凝,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機與錄音眨补,去河邊找鬼管削。 笑死,一個胖子當著我的面吹牛撑螺,可吹牛的內容都是我干的含思。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼甘晤,長吁一口氣:“原來是場噩夢啊……” “哼含潘!你這毒婦竟也來了?” 一聲冷哼從身側響起安皱,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤调鬓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后酌伊,有當地人在樹林里發(fā)現了一具尸體腾窝,經...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡缀踪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年健田,在試婚紗的時候發(fā)現自己被綠了鹅龄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡岩瘦,死狀恐怖循集,靈堂內的尸體忽然破棺而出唇敞,到底是詐尸還是另有隱情,我是刑警寧澤咒彤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布疆柔,位于F島的核電站,受9級特大地震影響镶柱,放射性物質發(fā)生泄漏旷档。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一歇拆、第九天 我趴在偏房一處隱蔽的房頂上張望鞋屈。 院中可真熱鬧,春花似錦故觅、人聲如沸厂庇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽权旷。三九已至,卻和暖如春贯溅,著一層夾襖步出監(jiān)牢的瞬間炼杖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工盗迟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留坤邪,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓罚缕,卻偏偏與公主長得像艇纺,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子邮弹,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內容

  • 題目 第9題:回文數 判斷一個整數是否是回文數黔衡。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數腌乡。 示...
    DonLex閱讀 679評論 0 1
  • 判斷一個整數是否是回文數盟劫。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數与纽。 示例 1: 輸入: 12...
    bocsoft閱讀 1,230評論 0 0
  • 回文數的定義:回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數侣签。 示例1: 輸入:121 輸出:Tru...
    只有我最可愛c閱讀 2,099評論 1 2
  • 你認為什么時候的你是最孤獨的塘装。 在和朋友聊天,你一句話也插不上的時候影所。在你一個人上下班的時候蹦肴。還是在你一個人生...
    光芒萬丈的深淵閱讀 238評論 0 1
  • 夜色下阴幌,仍然游蕩的不只有幽靈,還有一個個恍若吃了興奮劑的賭徒卷中。而我正是他們中的一員矛双,只不過不同的是,我已輸的傾家蕩...
    意風閱讀 1,043評論 0 0