数据结构与算法:字符串的统计字符串(javascript)

217 阅读1分钟
// 字符串的统计字符串

// 【题目】

// 给定一个字符串 str,返回 str 的统计字符串。例如,"aaabbadddff"的统计字符串为"a3b2a1d3f2"。

const s = "aaabbadddff";

const getCount = s => {
  if (s !== "") {
    let result = "";
    let tmp = s[0];
    let count = 0;
    for (let i = 0; i < s.length; i++) {
      if (s[i] === tmp) {
        count++;
      } else {
        result += `${tmp}${count}`;
        tmp = s[i];
        count = 1;
      }
    }
    result += `${tmp}${count}`;
    return result;
  }
  return "";
};
console.log(getCount(s));

// 补充问题:给定一个字符串的统计字符串cstr,再给定一个整数index,返回cstr所代表的原始字符串上的第index个字符。例如,"a 1 b 100"所代表的原始字符串上第0个字符是'a',第50个字符是'b'。

const cstr = "a3b2a1d3f2";
const getChar = (s, index) => {
  if (s === "") {
    return "";
  }
  let sum = 0;
  let j = 0;
  for (let i = 0; i < cstr.length / 2; i++) {
    sum += Number(cstr[i * 2 + 1]);
    if (sum >= index + 1) {
      j = i;
      break;
    }
  }
  if (sum < index + 1) {
    return "";
  }
  return s[j * 2];
};
console.log(getChar(cstr, 0));