欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

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-有效的字母异位词的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。