第242. 有效的字母异位词

解题思路

242. 有效的字母异位词
这个题目主要是判断字符和字符个数

  1. 排序:转换成数组进行排序后,然后再转换成字符串用equal比较
  2. 哈希表:存放第一个字符串中的每一个字符及其出现的次数,然后遍历第二个字符串,比较二个字符串出现的字符及出现的次数是否相同。

代码

方法一:排序
class Solution {
    //数组的排序,排序后然后换成字符串用equal比较
	public static boolean isAnagram(String s, String t) {
		char[] c1 = s.toCharArray();
		char[] c2 = t.toCharArray();
		Arrays.sort(c1);
		Arrays.sort(c2);
		String a = new String(c1);
		String b = new String(c2);
		if(a.equals(b)) {
			return true;
		}
		return false;
    }
}

简化:

class Solution {
    //数组的排序,排序后然后换成字符串用equal比较
	public static boolean isAnagram(String s, String t) {
		char[] c1 = s.toCharArray();
		char[] c2 = t.toCharArray();
		Arrays.sort(c1);
		Arrays.sort(c2);
		return Arrays.equals(c1, c2);
    }
}

image.png

方法二:哈希表
class Solution {
    //哈希表 :存放每一个字符及其出现的次数
	public static boolean isAnagram(String s, String t) {
		if(s.length()!=t.length()) return false;
		Map<Character , Integer> map = new HashMap<>();
		for(int i = 0 ; i<s.length() ; i++) {
			char c = s.charAt(i);
			map.put(c, map.getOrDefault(c, 0)+1); //把每一个字符和其出现的次数加入哈希表
		}
		
		for(int k=0 ; k<t.length() ; k++) {
			char c= t.charAt(k);
			map.put(c, map.getOrDefault(c, 0)-1);  //每遍历到相应的字符就把次数减1
			if(map.get(c)<0) {  //如果减到小于0,说明不匹配
				return false;
			}
		}
		return true;
    }
}

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值