Compare Strings详解编程语言
编程语言 详解 Compare strings
2023-06-13 09:11:53 时间
题 Two Strings Are Anagrams | Data Structure and Algorithm 的变形题。题目意思是问B中的所有字符是否都在A中,而不是单个字符。比如B= AABC 包含两个「A」,而A= ABCD 只包含一个「A」,故返回false. 做题时注意题意。
既然不是类似 strstr 那样的匹配,直接使用两重循环就不太合适了。题目中另外给的条件则是A和B都是全大写单词,理解题意后容易想到的方案就是先遍历 A 和 B 统计各字符出现的频次,然后比较频次大小即可。
class Solution { public: /** * @param A: A string includes Upper Case letters * @param B: A string includes Upper Case letter * @return: if string A contains all of the characters in B return true * else return false bool compareStrings(string A, string B) { if (A.size() B.size()) { return false; const int AlphabetNum = 26; int letterCount[AlphabetNum] = {0}; for (int i = 0; i != A.size(); ++i) { ++letterCount[A[i] - A]; for (int i = 0; i != B.size(); ++i) { --letterCount[B[i] - A]; if (letterCount[B[i] - A] 0) { return false; return true; };异常处理,B 的长度大于 A 时必定返回false, 包含了空串的特殊情况。 使用额外的辅助空间,统计各字符的频次。 复杂度分析
遍历一次 A 字符串,遍历一次 B 字符串,时间复杂度最坏 O(2n), 空间复杂度为 O(26)
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/20681.html
cgojava相关文章
- Java实现文件夹删除方式总结详解编程语言
- Python 处理各种编码的字符串详解编程语言
- MQ发送消息到队列的Java代码详解编程语言
- 邀请码生成器Java代码详解编程语言
- java实现MD5加密算法详解编程语言
- JAVA的AES加密步骤解释详解编程语言
- 一行代码,发送邮件详解编程语言
- Go语言圣经–JSON习题2详解编程语言
- Controller接口控制器详解(1)——SpringMVC编程语言
- 阿里云上传图片详解编程语言
- struts2自定义类型转换(2)基于StrutsTypeConverter详解编程语言
- window.frames在不同浏览器中的用法详解编程语言
- Drools6学习和简单实用详解编程语言
- java中的四舍五入详解编程语言
- 在Windows下安装运行Kafka详解编程语言
- poi 合并单元格、设置边框详解编程语言
- 新生代与老年代详解编程语言
- 自动化测试常用断言的使用方法(python)详解编程语言
- JS实现手机摇一摇功能详解编程语言
- Java基础-Random类详解编程语言
- javascript 曲线流光动画详解编程语言
- jquery swiper自定义pagination的方法详解编程语言
- php imagick 文字居中的方法详解编程语言
- 使用Java合并图片、修改DPI详解编程语言
- ECC TO HANA 程序 RGLFUNCA dump详解编程语言