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题解有效字母异位词的资料请关注脚本之家其它相关文章!

相关文章

  • 解决spring-cloud-config 多服务共享公共配置的问题

    解决spring-cloud-config 多服务共享公共配置的问题

    这篇文章主要介绍了解决spring-cloud-config 多服务共享公共配置的问题,本文通过多种方法给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • 基于Java实现根据周次生成数据的工具类

    基于Java实现根据周次生成数据的工具类

    这篇文章主要为大家详细介绍了一个基于Java的周次生成工具,用于根据指定的年份和周次类型(自然周或财务周)生成连续的周次列表数据,希望对大家有所帮助
    2025-08-08
  • Java 将Excel转为SVG的方法

    Java 将Excel转为SVG的方法

    本文以Java示例展示如何将Excel文档转为SVG格式。通过本文中的方法,在将Excel转为SVG时,如果sheet工作表中手动设置了分页,则将每个分页的内容单独保存为一个svg文件,如果sheet工作表中没有设置分页,则将Excel sheet表格中默认的分页范围保存为svg。
    2021-05-05
  • java数学工具类Math详解(round方法)

    java数学工具类Math详解(round方法)

    这篇文章主要为大家详细介绍了java数学工具类Math,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Java关于MD5文件校验问题处理

    Java关于MD5文件校验问题处理

    文章主要介绍了Java获取文件MD5值的五种方法,包括原始读入内存、分多次读入、使用字节数组转十六进制字符串、利用commons-codec包等,并解释了MD5算法原理、用途及安全性,最后提供了验证生成MD5值正确性的方法
    2026-03-03
  • java使用正则表达式查找包含的字符串示例

    java使用正则表达式查找包含的字符串示例

    这篇文章主要介绍了java使用正则表达式查找包含的字符串功能,结合具体实例形式分析了java针对字符串匹配查找的相关实现技巧,需要的朋友可以参考下
    2017-04-04
  • Springboot-Management的项目实践

    Springboot-Management的项目实践

    本文主要介绍了Springboot-Management的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • spring boot 与kafka集成的示例代码

    spring boot 与kafka集成的示例代码

    这篇文章主要介绍了spring boot 与kafka集成的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Java实现顺序表的操作

    Java实现顺序表的操作

    这篇文章主要为大家详细介绍了Java实现顺序表的基本操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Java递归简单实现n的阶乘

    Java递归简单实现n的阶乘

    这篇文章主要介绍了Java递归简单实现n的阶乘,递归(recursion)就是子程序(或函数)直接调用自己或通过一系列调用语句间接调用自己,是一种描述问题和解决问题的基本方法,下面我们举一个小小的例子详情了解一下,需要的朋友可以参考下
    2021-12-12

最新评论