ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【LeetCode】判斷是否為回文Palindrome

2022-01-27 12:35:40  阅读:168  来源: 互联网

标签:10 Palindrome return rev num let 判斷 LeetCode Math


這次的題目是剛開始學習程式語言的初學者都學過的邏輯: 回文
一樣先來看下題目
Given an integer x, return true if x is palindrome integer.

An integer is a palindrome when it reads the same backward as forward.

For example, 121 is a palindrome while 123 is not.
這裡就不翻譯了畢竟題目顯而易見
先來看一下我的代碼

var isPalindrome = function (x) {
  const num  = x.toString()
  let result
  let length = num.length - 1
  for (let i = 0; i < num.length; i++) {
    if (num[i] === num[length - i]) {
      result = true
    } else {
      console.log(i)
      return false
    }
  }
  return result
}

雖然可行,不過效能方面似乎不太理想
Runtime: 348 ms, faster than 20.76% of JavaScript online submissions for Palindrome Number. Memory Usage: 50.7 MB, less than 7.18% of JavaScript online submissions for Palindrome Number


看到了一個會心一笑的答案
function isPalindrome(x) {
  if (x < 0) return false;
  if (x < 10) return true;
  if (x % 10 === 0) return false
  let rev = 0;
  while (rev < x) {
    rev *= 10;
    rev += x%10;
    x = Math.trunc(x/10);
  }
  return rev === x || Math.trunc(rev/10) === x;
}

因為確實很簡單的是前面都把最基本的跟小於10或者10的倍數這些都給先過濾掉了,而當個位數時,自然是個回文
而繼續往下判斷使用了循環:
rev *= 10 : 表示增加位數,個位變十位,十位在變百位以此類推
rev += x%10 : 表示把x的各位數取出並加回rev變量
x = Math.trunc(x/10) : 縮減一位數,已供下次循環繼續使用

而最後的判斷可以發現
rev === x : 針對位數為雙數時
Math.trunc(rev/10) === x : 針對位數為單數時

第二個方法則是充分利用了js 內建的方法

var isPalindrome = function (x) {
	if (x === 0) return true;
	if (x < 0 || x % 10 === 0) return false;
	return `${x}` === `${x}`.split('').reverse().join('');
}

先把x轉為字符串,而後再將字符串轉為數組好調用reverse最後在將這些數組拼接回字符串,和原本的x做對比!

标签:10,Palindrome,return,rev,num,let,判斷,LeetCode,Math
来源: https://blog.csdn.net/tp27933/article/details/122715487

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有