睡前做两道简单的
题一
解题思路:
- 考虑将字符串截取为两部分,front部分和end部分,front部分为原字符串的前半部分,end为原字符串的后半部分
- 根据k索引参数截取字符串为front
- 通过数组以front为分割点进行分割得到空和end
- 做字符串拼接 end+front
代码
/**
* @param {string} s
* @param {number} n
* @return {string}
*/
var reverseLeftWords = function(s, n) {
let endStr = s.slice(0,n);
let frontStr = s.split(endStr);
return frontStr[1]+endStr
};
题二
解题思路:
- 做字符串翻转判断当前参数和翻转后的字符串是否相等
存在问题: - 耗时较久,问题原因可能在于操作数组,数组原型链上的方法时间复杂度较高
/**
* @param {number} x
* @return {boolean}
*/
var isPalindrome = function(x) {
let arr = x.toString().split('')
let reverse = arr.reverse().join('')
let flag = parseInt(reverse)===x?true:false;
return flag
};
新思路 使用指针的方式
var isPalindrome = function (x) {
if (x < 0 || (x>0 && x % 10 === 0)) return false;
let numStr = x.toString();
let i = 0;
let j = numStr.length - 1;
while (i < j) {
if (numStr[i] !== numStr[j]) {
return false;
}
i++;
j--;
}
return true;
};