Example 22
有效的字母异位词
题目概述:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若s 和 t中每个字符出现的次数都相同,则称s 和 t互为字母异位词。
示例1:
输入: s = "anagram", t = "nagaram"
输出: true
示例 2:
输入: s = "rat", t = "car"
输出: false
解题思路:t 是s 的异位词等价于「两个字符串排序后相等」。因此我们可以对字符串s 和t 分别排序,看排序后的字符串是否相等即可判断。此外,如果s 和t 的长度不同,t 必然不是s 的异位词。
解题步骤:
1. 判断s与t长度是否不等,若不等,则说明t 一定不是 s 的字母异位词,返回false。
2. 将字符串s与t分别转换为字符型数组,并分别将两个数组排序。
3. 比较两个数组是否相等,若相等则表明t 是 s 的字母异位词,否则表明t 不是 s 的字母异位词,将比较结果返回。
示例代码如下:
public class ValidAnagram { /** * 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 * 注意:若s 和 t中每个字符出现的次数都相同,则称s 和 t互为字母异位词。 * 示例1: * 输入: s = "anagram", t = "nagaram" * 输出: true * 示例 2: * 输入: s = "rat", t = "car" * 输出: false * 来源:力扣(LeetCode) * 链接:https://leetcode.cn/problems/valid-anagram */ public static void main(String[] args) { ValidAnagram va = new ValidAnagram(); System.out.println(va.isAnagram("anagram", "nagaram")); // true } /** * 官方 * * @param s * @param t * @return */ public boolean isAnagram(String s, String t) { if (s.length() != t.length()) { return false; } char[] str1 = s.toCharArray(); char[] str2 = t.toCharArray(); Arrays.sort(str1); Arrays.sort(str2); return Arrays.equals(str1, str2); } }