1~10000之间的所有对称数
数组反转
const findPalindromeByReserveArray = () => { const arr = [] for(let i = 1; i <= 10000; i++){ const str = String(i) const strArr = str.split('') if(str === strArr.reverse().join('')){ arr.push(i) } } return arr }
字符串前后index值比较
const findPalindromeByCompareIndex = () => { const arr = [] for(let i = 1; i <= 10000; i++){ const s = String(i) const length = s.length let startIndex = 0 let endIndex = length - 1 let flag = true while(startIndex < endIndex){ if(s[startIndex] === s[endIndex]){ startIndex++ endIndex-- }else{ flag = false break } } if(flag) arr.push(i) } return arr }
翻转数字方法
const reverseNumbers = (num) => { let rev = 0 while(num > 0){ rev = rev * 10 + num % 10 num = Math.floor(num / 10) } return rev }
使用翻转数字
const findPalindrome = (n = 10000) => { const reserveNumber = (num) => { let base = 0 while (num > 0) { base = base * 10 + num % 10 num = Math.floor(num / 10) } return base } const res = [] while (n > 0) { if (reserveNumber(n) === n) res.push(n) n-- } return res }
const isReserveNum = (num = 1234321) => { const s = String(num); for (let i = 0; i < s.length; i++) { const v = s[i]; if (v !== s[s.length - 1 - i]) return false; } return true; };
以自己现在的努力程度,还没有资格和别人拼天赋