当前位置:
首页 >
LeetCode-有效的字母异位词
发布时间:2025/3/15
35
豆豆
生活随笔
收集整理的这篇文章主要介绍了
LeetCode-有效的字母异位词
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
题目描述:
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
输入: s = "anagram", t = "nagaram" 输出: true 输入: s = "rat", t = "car" 输出: false思路:
1、可以用排序,然后再进行比较是否相同。不过再这个之前,可以先判断两个字符串长度是否相同,如果不同,可以直接返回false。
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); }2、哈希表。因为涉及到字母,都是只包含26个字母,可以创建一个大小为26的数组
然后进行分别计算S字符串中字母的频率和T字符串中字母的频率,S增加,T减少,最后,如果计数器为0,那么说明两个字符串是字母异位词
或者可以先用计数器计算S,然后用T减少每个字母,如果任何时候计数器低于0,就知道T包含一个不在S中的额外字母,就可以立即返回False
Java
class Solution {public boolean isAnagram(String s, String t) {//如果我们s和 t 的长度不一样,则立即返回falseif (s.length() != t.length()) {return false;}//只有26个字符大小int[] table = new int[26];//先用计数器表计算 s,然后用 t 减少计数器表中的每个字母的计数器。如果在任何时候计数器低于零,我们知道 t包含一个不在 s中的额外字母,并立即返回 FALSEfor (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;} }C 语言
bool isAnagram(char * s, char * t){if(strlen(s)!=strlen(t)) return false;int table[26]={};for(int i=0;i<strlen(s);++i){table[s[i]-'a']++;}for(int i=0;i<strlen(t);++t){table[t[i]-'a']--;if(table[t[i]-'a']<0) return false;}return true; }C++
class Solution { public:bool isAnagram(string s, string t) {if(s.size()!=t.size()){return false;}int table[26]={};for(int i=0;i<s.size();++i){table[s[i]-'a']++;}for(int i=0;i<t.size();++i){table[t[i]-'a']--;if(table[t[i]-'a']<0){return false;}}return true;} };Python
直接调用使用内置模块collections中的Counter类
class Solution:def isAnagram(self, s: str, t: str) -> bool:return collections.Counter(s) == collections.Counter(t)
总结
以上是生活随笔为你收集整理的LeetCode-有效的字母异位词的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: InvalidCharacterErro
- 下一篇: css设置字体颜色、文本对齐方式、首行缩