给定两个字符串 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是字母异位词
- }
-
相关阅读:
RobotFramework自动化测试框架系列学习----(三)Web自动化原理+实操
mysql两阶段提交
深入Java微服务之网关系列1:什么是网关
【番外篇】如何制作慕斯蛋糕
栈(stack)入门详解之C语言版
【算法 | 模拟No.5】leetcode 74. 搜索二维矩阵
Kotlin协程:Flow基础原理
夏日小风扇(.html实现)——小太阳给她带去凉爽
softmax回归从零开始实现
【GitHub前端练手项目--50天50个项目---商品加载效果-----day08】
-
原文地址:https://blog.csdn.net/xiao_xiao_wang_/article/details/133879572
-
最新文章
-
沪漂五周年了:我越来越迷茫了
Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
MySQL-Seconds_behind_master的精度误差
[MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
Agent OS :五种驯服不确定性的范式
PortSwigger SQL注入LAB11
数据库即时编译JIT
[Begin]AI Learn Data Day 0
深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU