无锡网站制作一般多少钱,网站建设怎么招聘,网络解决方案公司,小微企业利润大于300万#x1f4dd;个人主页#xff1a;五敷有你 #x1f525;系列专栏#xff1a;算法分析与设计
⛺️稳中求进#xff0c;晒太阳 题目 给定两个字符串 s 和 t #xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 注意#xff1a;若 s 和 t 中每个字符出现的次… 个人主页五敷有你 系列专栏算法分析与设计
⛺️稳中求进晒太阳 题目 给定两个字符串 s 和 t 编写一个函数来判断 t 是否是 s 的字母异位词。 注意若 s 和 t 中每个字符出现的次数都相同则称 s 和 t 互为字母异位词。 示例
示例 1:
输入: s anagram, t nagaram
输出: true示例 2:
输入: s rat, t car
输出: false
思路 首先判断两个字符串长度是否相等不相等则直接返回 false 若相等则初始化 26 个字母哈希表遍历字符串 s 和 t s 负责在对应位置增加t 负责在对应位置减少 如果哈希表的值都为 0则二者是字母异位词 代码实现
class Solution {public boolean isAnagram(String s, String t) {int[] arrnew int[26];for(int i0;is.length();i){arr[s.charAt(i)-a];}for(int i0;it.length();i){arr[t.charAt(i)-a]--;}for(int i0;i26;i){if(arr[i]!0)return false;}return true;}
}
运行结果 进阶
如果输入字符串包含 unicode 字符怎么办你能否调整你的解法来应对这种情况
思路
针对包含Unicode字符的情况我们需要一种通用的方法来记录字符频率。一种简单有效的方法是使用一个哈希表其中键是字符值是该字符在字符串中出现的次数。我们可以遍历字符串将字符及其出现的次数记录在哈希表中。然后我们比较两个字符串的哈希表如果它们相同则说明两个字符串是字母异位词。
具体步骤如下
初始化两个哈希表分别用于记录两个字符串中字符的出现次数。遍历第一个字符串将字符及其出现次数记录在第一个哈希表中。遍历第二个字符串将字符及其出现次数记录在第二个哈希表中。检查两个哈希表是否相同如果相同则返回true否则返回false。
这种方法可以处理包含Unicode字符的情况因为哈希表可以处理任何字符类型的键。
代码实现
class Solution {public boolean isAnagram(String s, String t) {if (s.length() ! t.length()) {return false;}// 初始化两个哈希表用于存储字符频率MapCharacter, Integer freqS new HashMap();MapCharacter, Integer freqT new HashMap();// 计算字符串s的字符频率for (char c : s.toCharArray()) {freqS.put(c, freqS.getOrDefault(c, 0) 1);}// 计算字符串t的字符频率for (char c : t.toCharArray()) {freqT.put(c, freqT.getOrDefault(c, 0) 1);}// 检查两个哈希表是否相同return freqS.equals(freqT);}
}运行结果