今天给大家分享的题目是leetcode242有效的字母异位词
我们先看题目描述:
Chatgpt中对于字母异位词的解释如下:
字母异位词是指由相同的字母组成但顺序不同的单词。换句话说,字母异位词具有相同的字母,只是排列顺序不同。
简单的将就是字母相同,但是顺序不同。
特别地,在leetcode中的题目判题标准中,“abc”与“abc”也算字母异位词。
好了下面来讲下我得思路。
解题思路:
首先,我们可以开辟一个长度为26的数组,用于统计每个字母出现的次数。然后我们遍历第一个传入的字符串s,将字符串中出现的字母存放在数组中去,并进行统计。然后我们对字符串t进行遍历,并用数组中存放的字符串s所统计的字母减去t中出现的字母,如果说最后数组为0,表示是字母异位词,否则就不是。
下面我们来结合代码进行进一步梳理思路:
public boolean isAnagram(String s, String t) {int arr[]=new int[26];int i=0;//遍历字符串sfor (i=0;i<s.length();i++){arr[s.charAt(i)-'a']++;}//遍历字符串tfor (i=0;i<t.length();i++){arr[t.charAt(i)-'a']--;}//遍历数组for (i=0;i<arr.length;i++){if (arr[i]!=0){return false;}}return true;}
可能大家看了代码之后,最不能理解的是arr[s.charAt(i)-'a']++
这一点是什么意思,我们首先调用s.charAt(i)
获取字符串中的每个字母,加入我们的s是”abc“,当i=0时,s.charAt(0)就为a,然后a-a的结果就是0,arr[0]++也就是数组下标为0的位置进行数值+1,因为我们数组初始化时默认赋值全部为0,这样就可以对字母出现的次数进行统计了。然后对字符串t同样也是相同到底,只不过字符串s在统计字母时对下标位置进行++,而字符串t则是进行–。
那么这道题的代码并不难,难的是这道题的思路,如果是第一次接触到本道题的同学可以结合我的思路和代码进行好好梳理一下。
那么今天的题目分析及代码讲解就到这里结束了,如果觉得博主写的对你有帮助的话麻烦给博主点个小爱心谢谢O(∩_∩)O!