js-challenges
js-challenges copied to clipboard
压缩字符串
abbccccaaa->a1b2c4a3
function yasuoString(str) {
if (str.length === 0 || str.length === 1) return str;
let cur = str[0];
let count = 1;
let res = "";
for (let i = 1; i < str.length; i++) {
if (str[i] !== cur) {
res += `${cur}${count}`;
cur = str[i];
count = 1;
} else {
count++;
}
}
res += `${cur}${count}`;
return res;
}
function ShortenStr(str) {
const stk = [];
let cnt = 0;
let res = "";
for (let i = 0; i < str.length; i++) {
if (stk.length == 0) {
stk.push(str[i]);
cnt++;
}
else if (str[i] === stk[stk.length - 1]) {
cnt++;
} else {
let currentStr = stk.pop();
res += currentStr + cnt;
cnt = 1;
stk.push(str[i]);
}
}
if (stk.length) res += stk.pop() + cnt;
return res;
}
console.log(ShortenStr("abbccccaaa"));
function ShortenStr(str) {
const map = new Map();
let res = "";
for (let char of str) {
map.set(char, (map.get(char) || 0) + 1);
}
for ([char, count] of map) {
res += char + count;
}
return res;
}
console.log(ShortenStr("abbccccaaa"));
function compressString(str) {
return str.replace(/(.)\1*/g, function(match, p1) {
return p1 + match.length;
});
}
function zipStr(str) {
let index = 0;
let left = 0;
let right = 0;
let strs = "";
while (left < str.length) {
if (str[left] !== str[right]) {
strs = strs + (str[right] + index);
right = left;
index = 0;
}
left++;
index++;
}
strs = strs + (str[right] + index);
return strs;
}
zipStr("aabbccddeeffggaabbssssddada");
const shorterStr = (str) => {
let _cur = '';
let _str = '';
let repeat = 1;
for(var i = 0; i < str.length; i++) {
if(_cur === str[i]) {
repeat += 1;
} else {
if(repeat > 1) {
_str += repeat;
}
_cur = str[i];
_str += _cur;
repeat = 1;
}
}
_str += repeat;
return _str;
}
console.log(shorterStr("abbccccaaa"));
function ShortenStr(str) { const map = new Map(); let res = ""; for (let char of str) { map.set(char, (map.get(char) || 0) + 1); } for ([char, count] of map) { res += char + count; } return res; } console.log(ShortenStr("abbccccaaa"));
有问题哈, 后面再出现的a加到前面去