LC-1170. 比较字符串最小字母出现频次(转换题意 + 排序 + 二分)

news/2025/1/20 0:00:59/

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

难度中等99

定义一个函数 f(s),统计 s 中**(按字典序比较)最小字母的出现频次** ,其中 s 是一个非空字符串。

例如,若 s = "dcce",那么 f(s) = 2,因为字典序最小字母是 "c",它出现了 2 次。

现在,给你两个字符串数组待查表 queries 和词汇表 words 。对于每次查询 queries[i] ,需统计 words 中满足 f(queries[i]) < f(W)词的数目W 表示词汇表 words 中的每个词。

请你返回一个整数数组 answer 作为答案,其中每个 answer[i] 是第 i 次查询的结果。

示例 1:

输入:queries = ["cbd"], words = ["zaaaz"]
输出:[1]
解释:查询 f("cbd") = 1,而 f("zaaaz") = 3 所以 f("cbd") < f("zaaaz")。

示例 2:

输入:queries = ["bbb","cc"], words = ["a","aa","aaa","aaaa"]
输出:[1,2]
解释:第一个查询 f("bbb") < f("aaaa"),第二个查询 f("aaa") 和 f("aaaa") 都 > f("cc")。

提示:

  • 1 <= queries.length <= 2000
  • 1 <= words.length <= 2000
  • 1 <= queries[i].length, words[i].length <= 10
  • queries[i][j]words[i][j] 都由小写英文字母组成

转换题意 + 排序 + 二分

https://leetcode.cn/problems/compare-strings-by-frequency-of-the-smallest-character/solution/python3javacgotypescript-yi-ti-yi-jie-pa-nu6o/

class Solution {public int[] numSmallerByFrequency(String[] queries, String[] words) {int m = words.length;int[] nums = new int[m];// 将words中的每个字符串w都计算出f(w),并将其排序,存放在数组nums中for(int i = 0; i < m; i++){nums[i] = f(words[i]);}Arrays.sort(nums);int n = queries.length;int[] res = new int[n];// 遍历queries中的每个字符串q,先计算f(q),然后再数组nums中查找第一个大于f(q)的位置ifor(int i = 0; i < n; i++){int x = f(queries[i]);int left = 0, right = m;while(left < right){int mid = (left + right) / 2;if(nums[mid] <= x) left = mid + 1;else right = mid;}res[i] = m - left;}return res;}// 返回字符串s中按字典序比较最小字母的出现次数public int f(String s){int[] cnt = new int[26];for(int i = 0; i < s.length(); i++){cnt[s.charAt(i) - 'a']++;}for(int x : cnt){if(x > 0)return x;}return 0;}
}

http://www.ppmy.cn/news/331814.html

相关文章

鸿蒙系统支持手表,终于等到了!WATCH旗舰系列搭载鸿蒙系统,你会支持吗?

终于等到了&#xff01;WATCH旗舰系列搭载鸿蒙系统&#xff0c;你会支持吗&#xff1f; 鸿蒙系统一直都是国人比较期待的一款手机系统&#xff0c;因为目前国内用户使用的都是苹果的IOS系统和安卓系统&#xff0c;遗憾的是并不是国人自己的系统&#xff0c;期待了很久的鸿蒙系统…

嵌入式了解 以及学习路线

1、嵌入式开发 VS 传统开发 区别&#xff1a; 嵌入式有操作系统为什么要移植操作系统&#xff1a;解决了软硬件耦合度&#xff0c;提高了软件一致性提供了很多开源的工具和库&#xff0c;可以实现多任务&#xff0c;提高了开发效率操作系统还有一些网络协议&#xff0c;因此嵌…

手打感想|关于国产操作系统鸿蒙底层采用英文编程语言这一点,我的几个看法。

最近看到有人说国产操作系统鸿蒙底层采用英文编程语言&#xff0c;这里我发表几点看法。 程序员写程序我想现在的阶段暂时也离不开英文&#xff0c;虽然有很多人都想中文编程&#xff0c;但是谈何容易&#xff0c;从一个角度来看&#xff0c;华为作为中国高新科技产业链的“领头…

华为WATCH GT 3和其他品牌手表比怎么样

昨日&#xff0c;华为WATCH GT 3海外版已经在华为亚太官方网站发布&#xff0c;这是继WATCH GT 2问世之后&#xff0c;华为智能穿戴产品线的又一重磅消息。自华为公司2018年发布首款运动手表GT系列后&#xff0c;GT系列凭借高颜值的时尚外观、强大的健康管理功能以及专业的健身…

h5调用相机拍照,并显示照片

h5页面调用手机相机拍照&#xff0c;并将照片显示在手机或pc端&#xff1b; html代码块&#xff1a; <input type"file" capture"camcorder" accept"image/*" id"filetest" name"filetest"> <img src"&quo…

重器 :关键基础设施保护

执行摘要 2019 年&#xff0c;全球政治经济秩序系统性挑战增加&#xff0c;在传统战争手段为各类条约所限不敢大肆发挥的情 况下&#xff0c;金融行业和网络安全 领域首当其冲&#xff0c;成为新型战争的试水手段甚至将会成为常规手段。《2018 网络安全观察》发布时&#xff0…

神经网络容易受到对抗攻击,网络攻防原理与技术

1、信息化战争的作战原则是什么? 三项基本原则&#xff1a;一是隐蔽&#xff1b;二是快速&#xff1b;三是高效。 隐蔽&#xff1a;就是通过隐身、欺骗等手段&#xff0c;确保“先敌发现、先敌攻击”&#xff1b; 快速&#xff1a;就是依托情报监视与侦察和快速打击系统&am…

常见嵌入式OS资料汇总

国内开源OS LiteOS Huawei LiteOS是华为面向物联网领域开发的一个基于实时内核的轻量级操作系统。本项目属于华为物联网操作系统[Huawei LiteOS]源码&#xff0c;现有基础内核包括不可裁剪的极小内核和可裁剪的其他模块。极小内核包含任务管理、内存管理、异常管理、系统时钟…