2023.6.10 比较字符串最小字母出现频次
首先按照题意把f(str)
这个函数实现出来。可以考虑用哈希表
+sort
来实现。
然后根据题目的数据范围,一个字符串最长为2000,可以知道,
所以可以考虑用前缀和来处理,定义一个长度为2001的数组s,用来作为前缀和数组,
每一次query的答案即为
use std::collections::{BTreeSet, HashMap};
impl Solution
{
pub fn num_smaller_by_frequency(queries: Vec<String>, words: Vec<String>) -> Vec<i32>
{
fn f(s: &str) -> usize
{
let mut chars: Vec<char> = Vec::new();
let mut map: HashMap<char, i32> = HashMap::new();
for c in s.chars()
{
chars.push(c);
map.entry(c).and_modify(|v| *v += 1).or_insert(1);
}
chars.sort();
map[&chars[0]] as usize
}
let mut s = vec![0; 2001];
for word in words { s[f(&word)] += 1; }
for i in 1..2001_usize { s[i] += s[i - 1]; }
queries.into_iter().map(|query| s[2000] - s[f(&query)]).collect()
}
}
作者:st0rmKR
出处:https://www.cnblogs.com/st0rmKR/p/17471125.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】