目录
1 代码
class Solution {
public int[] numSmallerByFrequency(String[] queries, String[] words) {
int count[]=new int[12];
int ans[]=new int[queries.length];
for(String s:words) {
count[f(s)]++;
}
for(int i=10;i>=0;i--) {
count[i]+=count[i+1];
}
for(int i=0;i<queries.length;i++) {
int s=f(queries[i]);
ans[i]=count[s+1];
}
return ans;
}
int f(String s) {
int len=s.length();
int ans=0;
char mincharacter='z';
for(int i=0;i<len;i++) {
if(s.charAt(i)<mincharacter) {
mincharacter=s.charAt(i);
ans=1;
}
else if(s.charAt(i)==mincharacter)
ans++;
}
return ans;
}
}
2 思路
定义了一个函数 f(s),用于统计字符串中字典序最小的字母的出现频次。
利用count作为字典记录每一个words的最小字母的出现频次 ,利用从后到前累加可以得到大于等于当前的出现频率的次数,最后利用ans[i]=count[s+1];得到大于当前queries[i]的words总数