leetcode 242 有效的字母异步位 (长度相同,字母顺序不同)

这篇博客探讨了LeetCode上的第242题,题目要求判断两个字符串是否为字母异位词。文章详细解释了如何通过比较字符串中字符的出现次数来确定它们是否满足异位词条件,同时提供了Python和Java的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package leetcode.sort;

import java.util.Arrays;
/**
 * @Description: 有效的字母异步位 (长度相同,字母顺序不同)
 * @Param:
 * @return:
 * @Author: lvhong
 * @Date:
 * @E-mail lvhong282@163.com
 */
public class lab242 {
   /** 
   * @Description:  时间复杂度:O(n \log n),假设 n 是 ss的长度,排序成本 O(n\log n)和比较两个字符串的成本 O(n)。排序时间占主导地位,总体时间复杂度为 O(nlogn)。
                      空间复杂度:O(1),空间取决于排序实现,如果使用 heapsort,通常需要 O(1)辅助空间。注意,在 Java 中,toCharArray() 制作了一个字符串的拷贝,所以它花费 O(n)额外的空间,但是我们忽略了这一复杂性分析,因为:
   这依赖于语言的细节。
   这取决于函数的设计方式。例如,可以将函数参数类型更改为 char[]。
   * @Param:  
   * @return:  
   * @Author: lvhong
   * @Date:  
   * @E-mail lvhong282@163.com
   */ 
    public boolean isAnagram(String s, String t) {//      这是转化为char数组,将它通过sort方法排序,通过equals返回比较结果
        if (s.length() != t.length()) {
            return false;
        }

        char[] s1 = s.toCharArray();
        char[] t1 = t.toCharArray();
        Arrays.sort(s1);
        Arrays.sort(t1);
        return Arrays.equals(s1, t1);

    }


/**
 * @Description: 时间复杂度:O(n)因为访问计数器表是一个固定的时间操作。
                   空间复杂度:O(1)尽管我们使用了额外的空间,但是空间的复杂性是 O(1)O(1),因为无论 NN 有多大,表的大小都保持不变。

 * @Param:
 * @return:
 * @Author: lvhong
 * @Date:
 * @E-mail lvhong282@163.com
 */

//
//    public boolean isAnagram(String s, String t) { //通过charAt将字符串内的字符-‘a' 存放在hash表内,   一个字符串对hash加,一个对hash减,最后判断hash表内每一个地址上的值是否是0
//        if(s.length()!=t.length()){
//            return false;
//        }
//        int[] counter = new int[26];
//        for(int i=0;i<s.length();i++){
//            counter[s.charAt(i)-'a']++;
//            counter[t.charAt(i)-'a']--;
//        }
//        for(int c:counter){
//            if(c !=0) {
//                return false;
//            }
//        }
////         int j=0;
////         while(j<s.length()){
////             if(counter[j++]!=0){return false;}
//
////         }
//        return true;
//
//    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值