字符串1170. 比较字符串最小字母出现频次

Posted ocpc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串1170. 比较字符串最小字母出现频次相关的知识,希望对你有一定的参考价值。

题目:

技术图片

 

 

解答:

思路就是先计算每个字符串中,26个字母每个出现的次数(fun函数的功能),然后就是二分查找找出答案。这里二分查找用的函数是标准库的 upper_bound。

 1 class Solution {
 2 public:
 3     vector<int> numSmallerByFrequency(vector<string>& queries, vector<string>& words) 
 4     {
 5         vector<int> q;
 6         vector<int> w;
 7 
 8         fun(queries, q);
 9         fun(words, w);
10 
11         sort(w.begin(), w.end());
12 
13         vector<int> ans;
14         for(int n : q)
15         {
16             auto ret = upper_bound(w.begin(), w.end(), n);
17             if(ret == w.end())
18             {
19                 ans.push_back(0);
20             }
21             else
22             {
23                 int pos = ret - w.begin();
24                 ans.push_back(w.size() - pos);
25             }
26         }
27 
28         return ans;
29     }
30 
31     // 计算每个字符串中,26个字母每个出现的次数
32     void fun(const vector<string>& strs, vector<int>& vec)
33     {
34         for(string s : strs)
35         {
36             for(int i = 0; i < 26; i++)
37             {
38                 char c = a + i;
39                 int cur = count(s.begin(), s.end(), c);
40                 if(cur > 0)
41                 {
42                     vec.push_back(cur);
43                     break;
44                 }
45             }
46         }
47     }
48 };

 

以上是关于字符串1170. 比较字符串最小字母出现频次的主要内容,如果未能解决你的问题,请参考以下文章

js筛选出 字符串中出现频次最高的 字母

2021-08-31:去除重复字母。给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。力扣316。

寻找比目标字母大的最小字母

744. 寻找比目标字母大的最小字母

SQL实现统计字符串出现的频次

279寻找比目标字母大的最小字母