leetCode 242.有效的字符异位词

Posted 诗萧尘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetCode 242.有效的字符异位词相关的知识,希望对你有一定的参考价值。

题目:给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。
说明:你可以假设字符串只包含小写字母。

示例1:
输入: s = “anagram”, t = “nagaram”
输出: true

示例2:
输入: s= “rat”, t=“car”
输出:false

分析:
1 字母异位词:
字符长度相等。
字符中各个字母的数量一致。
2 英文字符小写:
共有26个,以字母为下标为 array[a]…array[z]转换 26 个字母对应下标 0~25
3 比较s 和 t :
a. 分别统计 s,t 中各字母数量。比较 是否一致
b.数组array统计s中的字母数量,减去t中的字母数量,判断array 中各项是否为0;

伪代码:
//判断长度是否一致
// 统计 s, t
// 判断数组

代码实现:

    /**
     * 求解两个字符的异位词
     * @param t
     * @param s
     * @return
     */
    public static boolean ArrayYw(String t,String s)
        boolean flag =true;
        String EnglistChar="abcdefghijklmnopqrstuvwxyz";
        int [] charNum=new int[26];
        char[] tarr=t.toCharArray();
        char[] sarr=s.toCharArray();
        if(tarr.length!=sarr.length)
            return false;
        
        for (char i:tarr) 
            charNum[EnglistChar.indexOf(i)]+=1;
        
        for (char i:sarr) 
            charNum[EnglistChar.indexOf(i)]-=1;
        
        for (int m :charNum) 
            if(m!=0)
                flag=false;
                break;
            
        
        return flag;
    

调用代码:

 public static void main(String[] args) 
        String t="anagrlam";
        String s="nagaraml";
        Long currTime=System.currentTimeMillis();
        boolean m= ArrayYw(t,s);
        System.out.println(System.currentTimeMillis() -currTime);
        System.out.println(m);
        String t1="rat";
        String s1="car";
        boolean m1= ArrayYw(t1,s1);
        System.out.println(m1);

    

以上是关于leetCode 242.有效的字符异位词的主要内容,如果未能解决你的问题,请参考以下文章

前端与算法 leetcode 242. 有效的字母异位词

leetcode-242-有效的字母异位词

LeetCode 242. 有效的字母异位词

Leetcode 242.有效的字母异位词

leetCode242 有效的字母异位词

leetcode 242 有效的字母异位词(Easy)