概述
技术提高是一个循序渐进的过程,所以我讲的leetcode算法题从最简单的level开始写的,然后到中级难度,最后到hard难度全部完。
目前我选择C语言,Python和Java作为实现语言,因为这三种语言还是比较典型的。由于篇幅和精力有限,其他语言的实现有兴趣的朋友请自己尝试。
初级难度说的差不多的时候,我打算再加点其他内容,我可能会从操作系统到协议栈,从分布式聊到大数据框架,从大数据聊到人工智能,... ...。
如果有任何问题可以在文章后评论或者私信给我。
我会持续分享下去,敬请您的关注。
LeetCode 242. 有效的字母异位词(Contains Duplicate)
问题描述:
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。
注:
- 假设字符串只包含小写字母。
- 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
示例:
C语言实现:
解这道题的方法有很多,比如可以对s和t进行排序后再比较,或者构建一个map统计字符出现的次数等等。
我用的是统计次数方法,首先这种方法,时间复杂度比较好,只需要O(n),第二对于有限字符,空间复杂度是常数。
代码如下:
按照题目的描述,字符串仅包含小写字母。所以我们可以构建一个长度是26的数组count来统计所有小写字幕出现的次数。
如果s和t长度不等,那么一定返回false。否则我们同时遍历s和t,s中出现的字符在count中对应的位置加1,t中出现的字符在count中对应的位置减1,这样,如果s和t是异位词,那么最后遍历结束,每个字母的的统计次数将依然都是0。
python语言的实现:
可以直接对s和t进行排序然后比较排序后的字符串是否相等,但是跑下来的结果效率不太好,然后我将s和t转换成两个Counter对象,比较两个对象,这种算法结果还可以,也很简洁。
代码如下:
Java语言的实现:
Java的实现和C语言的实现基本相同。
代码如下:
最后我们再说说unicode的问题,首先python不用考虑这个问题,因为python3的字符串本来就是unicode编码的。
对于这道题我觉得,即使是unicode也没什么关系,以utf-8为例,前127个字符是和ascii码兼容的,而这127个字符就包含所有的小写英文字母。
最后
以上就是危机牛排为你收集整理的中判断字符串是否为空_LeetCode基础算法题第87篇:判断两个字符串是否是字母异位词...问题描述:示例:C语言实现:python语言的实现:Java语言的实现:的全部内容,希望文章能够帮你解决中判断字符串是否为空_LeetCode基础算法题第87篇:判断两个字符串是否是字母异位词...问题描述:示例:C语言实现:python语言的实现:Java语言的实现:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复