力扣leetcode 面试题 01.02. 判定是否互为字符重排

CSDN话题挑战赛第2期
参赛话题:算法题解


在这里插入图片描述

题目链接与描述

https://leetcode.cn/problems/check-permutation-lcci/

关键词: 排序 hash表

判断是否互为字符重排,那么必然是长度相等,相同的字符相等;
基于这两个条件,可以用:

  • 排序之后。对比字符串
  • 记录对应字符的个数比较(官方的解有点面向答案解答了,字符不一定是字母,所以应该用hash表)

方法一:hash表

运行截图

在这里插入图片描述

代码


    public boolean CheckPermutation(String s1, String s2) {
    
    
		if (s1.length() != s2.length()) {
    
    
			return false;
		}
		Map<Character, Integer> table = new HashMap<>();
		for (int i = 0; i < s1.length(); i++) {
    
    
			table.put(s1.charAt(i), table.getOrDefault(s1.charAt(i), 0) + 1);
		}
		for (int i = 0; i < s2.length(); i++) {
    
    
			table.put(s2.charAt(i), table.getOrDefault(s2.charAt(i), 0) - 1);
			if (table.getOrDefault(s2.charAt(i), 0) < 0) {
    
    
				return false;
			}
		}
		return true;
	 
    }

方法二:重排序

运行截图

在这里插入图片描述

代码


    public boolean CheckPermutation(String s1, String s2) {
    
    
        if (s1.length() != s2.length()) {
    
    
            return false;
        }
        char[] str1 = s1.toCharArray();
        char[] str2 = s2.toCharArray();
        Arrays.sort(str1);
        Arrays.sort(str2);
        return Arrays.equals(str1, str2);
    }
 

结尾

欢迎评论区交流,每日打卡,冲冲冲!!!

猜你喜欢

转载自blog.csdn.net/qq_35530042/article/details/127064670
今日推荐