字符串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. 比较字符串最小字母出现频次的主要内容,如果未能解决你的问题,请参考以下文章
2021-08-31:去除重复字母。给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。力扣316。