给定两个字符串 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面试题2022最新整合版,祝你脱颖而出
vue API 风格
JavaWeb(文件上传 异步文件上传 文件下载)
【后端】初识HTTP_2
骑行用什么蓝牙耳机好?骑行骨传导耳机推荐
【精品】JavaScript中获取URL中参数值的方法汇总
使用HTTPS模式建立高效爬虫IP服务器详细步骤
命令行版 Centos 7 虚拟机安装 xfce4 桌面 + x11vnc + novnc
轻量级网络整理及其在Yolov5上的实现
Python学习路线
-
原文地址:https://blog.csdn.net/xiao_xiao_wang_/article/details/133879572