Skip to content

Commit 2a5f475

Browse files
committed
add leetcode9 js solution
1 parent 304d798 commit 2a5f475

File tree

2 files changed

+46
-1
lines changed

2 files changed

+46
-1
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,7 @@
433433
|12|[Integer to Roman](https://leetcode.com/problems/integer-to-roman/)| |Medium|
434434
|11|[Container With Most Water](https://leetcode.com/problems/container-with-most-water/)| [js](./algorithms/containerWithMostWater/containerWithMostWater.js) |Medium|
435435
|10|[Regular Expression Matching](https://leetcode.com/problems/regular-expression-matching/)| |Hard|
436-
|9|[Palindrome Number](https://leetcode.com/problems/palindrome-number/)| |Easy|
436+
|9|[Palindrome Number](https://leetcode.com/problems/palindrome-number/)| [js](./algorithms/palindromeNumber/Solution.js) |Easy|
437437
|8|[String to Integer (atoi)](https://leetcode.com/problems/string-to-integer-atoi/)| |Easy|
438438
|7|[Reverse Integer](https://leetcode.com/problems/reverse-integer/)| [js](./algorithms/reverseInteger/reverseInteger.js),[java](./algorithms/reverseInteger/Solution.java) |Easy|
439439
|6|[ZigZag Conversion](https://leetcode.com/problems/zigzag-conversion/)| |Easy|
+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
// 普通解法:数字转为字符串,然后将字符串分割为数组,只需要循环数组的一半长度进行判断对应元素是否相等即可。
2+
var isPalindrome1 = function(x) {
3+
// 特殊情况:
4+
// 如上所述,当 x < 0 时,x 不是回文数。
5+
// 同样地,如果数字的最后一位是 0,为了使该数字为回文,
6+
// 则其第一位数字也应该是 0
7+
// 只有 0 满足这一属性
8+
if (x < 0 || (x % 10 === 0 && x !== 0)) {
9+
return false;
10+
}
11+
12+
const xStr = x.toString();
13+
const length = xStr.length;
14+
const middle = length / 2;
15+
for (let x = 0, y = length - 1; x <= middle; x++ , y--) {
16+
if (xStr[x] !== xStr[y]) {
17+
return false;
18+
}
19+
}
20+
return true;
21+
};
22+
23+
// 数学解法:通过取整和取余操作获取整数中对应的数字进行比较。
24+
var isPalindrome2 = function(x) {
25+
if (x < 0) {
26+
return false;
27+
}
28+
29+
let div = 1;
30+
while (x / div >= 10) {
31+
div *= 10
32+
}
33+
console.log('div', div)
34+
while (x > 0) {
35+
let left = parseInt(x / div),
36+
right = x % 10;
37+
if (left !== right) {
38+
return false
39+
}
40+
// 再往中间进一位继续判断
41+
x = parseInt((x % div) / 10);
42+
div /= 100
43+
}
44+
return true;
45+
};

0 commit comments

Comments
 (0)