JS手撕代码系列

358 阅读2分钟

字符串常见的算法

字符串的常用的函数 :

  1. split 指定的分隔符字符串将一个String对象分割成子字符串数组,以一个指定的分割字串来决定每个拆分的位置

字符串逆序输入

第一种实现方式

代码实现

 var s = 'abcdef';

        function reverseString(str) {
            // console.log(str.split(""))
            // console.log(str.split("").reverse())
            return str.split("").reverse().join("");
        }
        console.log(reverseString(s))

结果

image.png

第二种实现方式

代码实现

  var arr = Array.from(s)
        console.log(arr.reverse().join(""));

结果

fedcba

第三种实现方式

代码实现

   function reverseString2(str) {
            var result = "";
            for (let i = str.length - 1; i >= 0; i--) {
                result += str.charAt(i);
            }
            return result;
        }
        console.log(reverseString2(s))

charAt()  方法从一个字符串中返回指定的字符。语法:str.charAt(index)

统计字符串中出现次数最多的字符及出现的次数

function getMaxCount(str) {
var json = {}; //表示key-value结构的对象
//遍历str的每一个字符得到key-value形式的对象
for (var i = 0; i < str.length; i++) {
//判断json对象中是否有当前从str字符串中取出来的某个字符。
if (!json[str.charAt(i)]) {
//如果不存在,把当前字符作为key添加到json对象中,值为1
json[str.charAt(i)] = 1;
} else {
//如果存在,则让value值加1
json[str.charAt(i)]++;
}
} 
//存储出现次数最多的字符
var maxCountChar = "";
//存储出现最多的次数
var maxCount = 0;
//遍历json对象,找出出现次数最大的值
for (var key in json) {
if (json[key] > maxCount) {
maxCount = json[key];
maxCountChar = key;
}
} 
return (
"出现最多的字符是" + maxCountChar + ",共出现了" + maxCount + "次"\
);
} 
ar str = "javascriptjavaabc";
console.log(getMaxCount(str));

去除字符串中重复的字符

方法一

function removeStringChar(str) {
//结果数组
var result = [];
//key-value形式的对象
var json = {};
for (var i = 0; i < str.length; i++) {
//当前处理的字符
var char = str[i];
//判断是否在对象中
if (!json[char]) {
//将value值设置为true
json[char] = true;
//添加到结果数组中
result.push(char);
}
} 
return result.join("");
} 
var str = "javascriptjavaabc";
console.log(removeStringChar(str));  

方法二

const set = new Set([1,2,3,4,4,]);
//console.log(set) // Set(4) {1, 2, 3, 4}
[...set] // [1, 2, 3, 4] 通过扩展运算符将set中的内容转换成数组,同时可以看到已经去重。

判断一个字符串是否为回文字符串

function isEequStr(str) {
//空字符串则直接返回true
if (!str.length) {
return true;
} 
//统一转换成小写,同时再将其转换成数组
str = str.toLowerCase().split("");
var start = 0,
end = str.length - 1;
//通过while循环,判断正序和倒序的字母
while (start < end) {
// 如果相等则更改比较的索引
if (str[start] === str[end]) {
start++;
end--;
} else {
return false;
}
} 
return true;
}
var str = "abcdcba";