网站服务器类型,四川大学官方网站规划建设处,有什么国企是做网站的,徐州网站关键词推广题目#xff1a;leetcode242. 有效的字母异位词
描述#xff1a; 给定两个字符串 s 和 t #xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。
注意#xff1a;若 s 和 t 中每个字符出现的次数都相同#xff0c;则称 s 和 t 互为字母异位词。
示例 1: 输入: s “…题目leetcode242. 有效的字母异位词
描述 给定两个字符串 s 和 t 编写一个函数来判断 t 是否是 s 的字母异位词。
注意若 s 和 t 中每个字符出现的次数都相同则称 s 和 t 互为字母异位词。
示例 1: 输入: s “anagram”, t “nagaram” 输出: true
示例 2: 输入: s “rat”, t “car” 输出: false
思路 对于这道题做一个哈希表来解决是最好的暴力破解的时间复杂度太高。 首先题目其实是让我们判断字符串s和字符串t是否是同一个字符串的不一样的顺序也就是s字符串打乱顺序之后是否可以成为t。 明白了题目要求之后我们就可以做了首先题目说了可以假定都是小写字母那么字母数量就是26个如果有大写有小写那我们就要设置52个字母数量设置一个26个空间的整型数组来记录这个字符串当中出现的字母遍历第一个字符串每个字母-a’就得到了一个0到25的数字大小对应数组的下标最后对应的数组下标的位置做加一操作。 对于第二个字符串也是一样的求出对应数组的下标但是做的是减一操作。 做完上述操作之后检查哈希数组每个位置是否都是0如果是则符合规定如果不是返回false。
代码 class Solution {public boolean isAnagram(String s, String t) {int[] hashTablenew int[26]; //26个空间大小来保存26个字母的情况for(int i0;is.length();i)hashTable[s.charAt(i)-a];for(int i0;it.length();i)hashTable[t.charAt(i)-a]--;for(int i:hashTable)if(i!0)return false;return true;}
}