欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

算法案例之有效字母异位词

程序员文章站 2022-06-19 08:46:42
本题参考力扣题解写的理解思路,原文请参照力扣官网242题https://leetcode-cn.com/problems/valid-anagram/题目:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false说明:你可以假设字符串只包含小写字母。进阶:如果输入字符串包含 unicode 字符...

本题参考力扣题解写的理解思路,原文请参照力扣官网242题
https://leetcode-cn.com/problems/valid-anagram/
题目:
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

示例 1:
输入: s = “anagram”, t = “nagaram”
输出: true
示例 2:
输入: s = “rat”, t = “car”
输出: false
说明:
你可以假设字符串只包含小写字母。
进阶:
如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?

法一:
Arrays工具类的使用

class Solution {
    public boolean isAnagram(String s, String t) {
            //也就是说判断S中出现的字母,是不是t的字符串,顺序不一样而已
            if(s.length()!=t.length())
            {
                return false;
            }
            char[] str1 = s.toCharArray();
            char[] str2 = t.toCharArray();
            Arrays.sort(str1);
            Arrays.sort(str2);
            boolean flag = Arrays.equals(str1,str2);
            return flag;
    }
}

这个工具类的使用就是先把字符串全部转换,赋值复制一组副本到新的字符数组中算法案例之有效字母异位词,再利用我们的Arrays类中的排序方法,让这个字符数组进行排序,最后在进行比较看看对应位置上的字符是不是一样的。
算法案例之有效字母异位词
方法二:
哈希表

public class IsAnagram {
    public static boolean isAnagram(String s, String t) {
        if (s.length() != t.length()) {
            return false;
        }
        int[] table = new int[26];
        for (int i = 0; i < s.length(); i++) {
            table[s.charAt(i) - 'a']++;
        }
        for (int i = 0; i < t.length(); i++) {
            table[t.charAt(i) - 'a']--;
            if (table[t.charAt(i) - 'a'] < 0) {
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        String s = "anagram";
        String t ="nagaram";
        System.out.println(isAnagram(s, t));
    }
}

这个方法的意思就是,我们创建一个哈希表table,里面代表着26个英文字母,我们s中一个字母出现一次,我们就在相应的位置+1,反过来t就是减一,出现负数,那就说明,a中没有出现那个位置对应的字母
算法案例之有效字母异位词

本文地址:https://blog.csdn.net/qq_22155255/article/details/109961780