java题解leetcode242.有效的字母异位词
更新时间:2023年10月13日 09:38:33 作者:健身的墨镜
这篇文章主要为大家介绍了java题解leetcode242.有效的字母异位词方法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
leetcode242.有效的字母异位词
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
解决问题
一开始我想到的是拆分成数组再排序,最后比较就行,但是这样时间很长,要将近40ms
示例
char[] s1=s.toCharArray();
List<Character> x=new ArrayList<>();
for (char c : s1) {
x.add(c);
}
x.sort((o1,o2)->o1.charValue()-o2.charValue());
char[] s2=t.toCharArray();
List<Character> y=new ArrayList<>();
for (char c : s2) {
y.add(c);
}
y.sort((o1,o2)->o1.charValue()-o2.charValue());
if(x.size()!=y.size()){
return false;
}
for (int i = 0; i < x.size(); i++) {
if(x.get(i)!=y.get(i)){
return false;
}
}
return true;参考代码将该问题转换为比较字符串中字母出现次数问题,并只需要在扫描s时在26位数组中记录出现次数,然后扫描t时减去相应的次数,最后检测数组是否全为零就可以完美解决,只用了3ms
public boolean isAnagram(String s, String t) {
int[] hash=new int[26];
for (int i = 0; i < s.length(); i++) {
hash[s.charAt(i)-'a']++;
}
for (int i = 0; i < t.length(); i++) {
hash[t.charAt(i)-'a']--;
}
for (int i = 0; i < 26; i++) {
if(hash[i]!=0){
return false;
}
}
return true;
}以上就是java题解leetcode242.有效的字母异位词的详细内容,更多关于java题解有效字母异位词的资料请关注脚本之家其它相关文章!
相关文章
Kotlin基础教程之dataclass,objectclass,use函数,类扩展,socket
这篇文章主要介绍了Kotlin基础教程之dataclass,objectclass,use函数,类扩展,socket的相关资料,需要的朋友可以参考下2017-05-05
详解spring boot 使用application.properties 进行外部配置
这篇文章主要介绍了详解spring boot 使用application.properties 进行外部配置,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-03-03


最新评论