确定向量<char>中的大多数freq char元素?

rra*_*azd 2 c++ algorithm vector

我试图确定一个以字符为元素的向量中最常见的字符.

我在想这样做:

  • 循环遍历向量并创建一个映射,其中一个键将是向量中找到的唯一字符.相应的值将是该char的频率的整数计数.
  • 在浏览完向量中的所有元素后,地图将包含所有字符频率.因此,我将不得不找到哪个键具有最高值,从而确定向量中最常见的字符.

这似乎很复杂,因此我想知道是否有人可以建议这种方法在性能/良好编码方面是否被认为是"可接受的"

这可以用更好的方式完成吗?

izo*_*ica 6

如果您只使用常规的ascii字符,则可以使解决方案更快一些 - 而不是使用映射,使用大小为256的数组,并使用数组单元格中给定代码"x"计算字符的出现次数count[x].这将从您的解决方案中删除对数(256),从而使其更快一些.对于该算法的优化,我认为不能做更多的事情.

  • 注意:`char`可以**签名**在这种情况下使用它作为索引是......令人惊讶. (3认同)