07.字符串处理

统计数组中每个字符串出现次数

/**
  * 统计数组中每个字符串出现次数
  * @param string[] strs: 字符串数组, 例如 ['aa', 'ab', 'ab', 'cc', 'cba']
  * @return {[key: string]: number} 出现次数对象, 例如 { aa: 1, ab: 2, cc: 1, cba: 1 }
*/
var frequencyMap = (strs) => {
  const map = {};

  for (let i = 0; i < strs.length; i++) {
    const ch = strs[i];
    map[ch] = (map[ch] || 0) + 1;
  }

  return map;
}

处理给定字符串

/**
 * 请处理给定字符串:
 *   - 去掉无用字符和乱码, 只保留大小写英文字母, 单引号, 和空格
 *   - 把一个或多个连续无用字符和乱码换成一个空格. 注意多个乱码只替换成一个空格
 * @param str: 字符串, 例 "I'm我我我driving是to乱乱Beijing码after breakfast88"
 * @return str: 例 "I'm driving to Beijing after breakfast "
*/
var decode = (str) => {
  const result = [];

  for (let item of str) {
    if (/[a-zA-Z\'\s]/.test(item)) {
      result.push(item);
    } else {
      result[result.length - 1] != " " ? result.push(" ") : "";
    }
  }

  return result.join("");
}