实现一个算法,寻找字符串中出现次数最少的、并且首次出现位置最前的字符如
cbaacfdeaebb“,符合要求的是”f”,因为他只出现了一次(次数最少)。
并且比其他只出现一次的字符(如”d”)首次出现的位置最靠前。

const findMinStr = (str) => {
    const hash = {};
    for (let i = 0; i < str.length; i += 1) {
      hash[str[i]] = hash[str[i]] || { index: i, count: 0 };
      hash[str[i]].count += 1;
    }

    return Object.keys(hash).map(item => {
      return Object.assign({ char: item }, hash[item]);
    })
      .sort((a, b) => a.count - b.count)
      .filter((item, index, arr) => item.count === arr[0].count)
      .sort((a, b) => a.index - b.index)[0].char
};

const str = 'cbaacfdeaebb';

findMinStr (str)  // 'f'


分类: 面试

发表评论

电子邮件地址不会被公开。 必填项已用*标注