算法案例之有效字母异位词
程序员文章站
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