给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
示例 1:
输入: s = "anagram", t = "nagaram" 输出: true
示例 2:
输入: s = "rat", t = "car" 输出: false
方法一:用Map判断
- public static boolean isAnagram(String s, String t) {
- int sLen=s.length(),tLen=t.length();
- if(sLen!=tLen){
- return false;
- }
-
- Map
map=new HashMap(); - for (int i=0;i
- //map.getOrDefault(s.charAt(i),0)+1,查询s[i]是否在集合中,如果在则取键值,不在设置键值为0,最后再加1
- map.put(s.charAt(i),map.getOrDefault(s.charAt(i),0)+1);
- }
-
- for(int i=0;i
- //不存在map中,返回false
- if(!map.containsKey(t.charAt(i))){
- return false;
- }
- //取t[i]值,并减一
- map.put(t.charAt(i),map.get(t.charAt(i))-1);
- if(map.get(t.charAt(i))==0){
- map.remove(t.charAt(i));
- }
- }
- return true;
- }
方法二:用数组进行存储
- public static boolean isAnagram2(String s, String t) {
- //设置record数组为26,对应存储26个字母
- int[] record = new int[26];
-
- for (int i = 0; i < s.length(); i++) {
- record[s.charAt(i) - 'a']++; // 并不需要记住字符a的ASCII,只要求出一个相对数值就可以了
- }
-
-
- for (int i = 0; i < t.length(); i++) {
- record[t.charAt(i) - 'a']--;
- }
-
- for (int i=0;i
- if (record[i]!= 0) { // record数组如果有的元素不为零0,说明字符串s和t 一定是谁多了字符或者谁少了字符。
- return false;
- }
- }
- return true; // record数组所有元素都为零0,说明字符串s和t是字母异位词
- }
-
相关阅读:
计算机毕业设计之java+springboot基于vue的校园交友网站
【AI绘画 | draft意间】国产draft推荐及AI绘画背后的原理解读
火车卖票---Ticketer类
JDK21新特性Record Patterns记录模式详解
Vue错误记录
Vue后台管理系统项目(34)销售属性的添加操作
MES管理系统中的质量管理活动是什么
flutter 身兼数职的getx —— 依赖管理
webpack 官方文档解读一(详细使用教程) 起步
Java学习【深入解读File类:从基础到高级的完整指南】
-
原文地址:https://blog.csdn.net/xiao_xiao_wang_/article/details/133879572