1、 判断数字x是否是2的n次方,x>0且为整数
function isPowerOf2(x) {
if (x < 1) {
return false
}
while (x >= 2) {
x = x / 2
if (x - 1 === 0) {
return true
}
}
return false
}
function isPowerOf2(x) {
let flag = 1
while (flag) {
if (flag < x) {
flag = flag * 2
} else if (flag === x) {
return true
} else {
return false
}
}
}
function isPowerOf2(x) {
return (x & (x - 1)) === 0
}
2、 一个数组中包含了一个或多个正整数,其他数字都出现了2次,只有一个数字出现了1次,找出只出现一次的数字
function uniqueNumber(nums) {
let result = 0
nums.forEach(item => {
const firstIndex = nums.indexOf(item)
const lastIndex = nums.lastIndexOf(item)
if (firstIndex === lastIndex) {
result = item
}
})
return result
}
function uniqueNumber(nums) {
let result = 0
const obj = nums.reduce((a, b) => {
if (b in a) {
a[b]++
} else {
a[b] = 1
}
return a
}, {})
Object.keys(obj).forEach(key => {
if (obj[key] === 1) {
result = key
}
})
return result
}
function uniqueNumber(nums) {
return nums.reduce((a, b) => a ^ b, 0)
}
3、将数字(如:100000000)转为如下格式的字符串(100,000,000)
function convertNumber(num) {
return num.toLocaleString()
}
function convertNumber(num) {
return num.toString().replace(/(?=\B(\d{3})+$)/g, ',')
}
4、验证回文串

function isPalindrome(s) {
let str = s.replace(/[^a-zA-Z0-9]/g, '').toLowerCase()
let str2 = str.split('').reverse().join('')
return str === str2
}
function isPalindrome(s) {
let str = s.replace(/[^a-zA-Z0-9]/g, '').toLowerCase()
let left = 0
let right = str.length - 1
while (left < right) {
if (str[left] === str[right]) {
left++
right--
} else {
return false
}
}
return true
}