1、将一个字符串翻转,如 ’abcd’反转为‘dcba’
'abcd'.split('').reverse().join('')
2、如何判断一个字符串是否是回文字符串(例如:abccba就是一个回文字符串)
2.1可以利用上面翻转的方法判断与原字符串是否相等
function isEqual(str) {
const res = str.split('').reverse().join('')
return res === str
}
2.2可以用for循环判断第一位和最后一位是否相等,第二位和倒数第二位是否相等
function isEqual(str) {
const len = str.length;
if (len % 2 !==0) {
return false;
}
for (let i = 0; i < len/2; i++) {
if(str[i] !== str[len-i-1]){
return false;
}
}
return true;
}
3、求一个字符串let str = "abccbdca",出现最多的字符,及出现的次数。思路:将字符放到对象的key中,出现次数放到value里面。
function isMaxStr(str){
const obj = {};
for (let i = 0,len = str.length; i < len; i++) {
const char = str.charAt(i); //找出当前下标的字符
if (obj[char]) { //如果有当前这个字符,value值+1
obj[char]++;
} else {
obj[char] = 1;
}
}
console.log(obj); //{a: 2, b: 2, c: 3, d: 1}
//遍历对象,找到出现次数最多的字符和次数
let count = 0;
let maxStr = null;
for (let key in obj) {
if (count < obj[key]) {
count = obj[key]; //count始终储存次数最大的那个
maxStr = key; //那么对应的字符就是当前的key
}
}
return "最多的字符是" + maxStr + "出现的次数是" + count;
}
4、求字符串所有的排列组合,如abc可以排列成abc acb bac bca cba cab。
思路:先将第一个字符位置确定,后面字符进行递归,再和第一个字符拼接。第二步,再将第二个字符位置确定,进行递归拼接。(参考:https://www.cnblogs.com/nayek/p/12498052.html)
function permutations(s) {
let result = [];
if (s.length <= 1) {
return [s];
} else {
for (let i = 0; i < s.length; i++) {
let c = s[i];
const newStr = s.slice(0, i) + s.slice(i + 1, s.length);
let l = permutations(newStr);
for (let j = 0; j < l.length; j++) {
let tmp = c + l[j];
result.push(tmp);
}
}
}
return result;
};