Leetcode-242. 有效的字母异位词

题目:

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。

示例 1:

输入: s = "anagram", t = "nagaram"
输出: true

示例 2:

输入: s = "rat", t = "car"
输出: false

提示:

  • 1 <= s.length, t.length <= 5 * 104
  • s 和 t 仅包含小写字母

这道题,感觉有很多很多解法。首先这道题 要求每个字符出现的次数都相等,说明至少他们的各自的字符串长度必须得保持一致。然后可以将这两个字符串分别都按照ascll码从小到大排序,然后依次比较大小即可。

class Solution {
    public boolean isAnagram(String s, String t) {
        char[] s1 = s.toCharArray();
        char[] t1 = t.toCharArray();

        int T_or_F = 1;//判断ture或false
        int sLen = s.length();
        int tLen = t.length();

        Arrays.sort(s1);//字母排序
        Arrays.sort(t1);
        if(sLen==tLen)  //两个字符串长度必须一致
        {
            for(int i = 0;i

第二种方法,可以采用字母表记录每个字母的个数。

class Solution {
    public boolean isAnagram(String s, String t) {
        int[] zimu1 = new int[26];//存放s中的每个字母的个数
        int[] zimu2 = new int[26];//存放t中的每个字母的个数
        int T_or_F = 1;
        char[] s1 = s.toCharArray();
        char[] t1 = t.toCharArray();

        if(s.length()!=t.length())
        {
            T_or_F = 0;
        }
        for(int i = 0;i < s.length(); i++)
        {
            zimu1[s1[i]-'a']++;
        }
        for(int i = 0;i < t.length(); i++)
        {
            zimu2[t1[i]-'a']++;
        }
        for(int i = 0;i < 26;i++)
        if(zimu1[i]!=zimu2[i]||T_or_F==0) return false;
        return true;
    }
}

当然,这道题应该也可以使用HashMap来做!

你可能感兴趣的:(leetcode,算法,职场和发展)