js-challenges icon indicating copy to clipboard operation
js-challenges copied to clipboard

压缩字符串

Open Sunny-117 opened this issue 3 years ago • 7 comments

Sunny-117 avatar Nov 03 '22 08:11 Sunny-117

abbccccaaa->a1b2c4a3

Sunny-117 avatar Nov 03 '22 08:11 Sunny-117

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;
}

weirong111 avatar Nov 07 '22 02:11 weirong111

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"));

bearki99 avatar Feb 12 '23 11:02 bearki99

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"));

rpqp avatar Mar 19 '23 11:03 rpqp

function compressString(str) {
  return str.replace(/(.)\1*/g, function(match, p1) {
    return p1 + match.length;
  });
}

2239351258 avatar Apr 06 '23 08:04 2239351258

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");

dizao006 avatar Oct 07 '24 08:10 dizao006


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"));

Windseek avatar Nov 15 '24 03:11 Windseek

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加到前面去

SheldonWatson avatar Apr 20 '25 06:04 SheldonWatson