算法面试题-查找指定的字符串
实现一个算法,寻找字符串中出现次数最少的、并且首次出现位置最前的字符如
“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'
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 kshao-blog-前端知识记录!
评论