【LeetCode】242. 有效的字母异位词

242. 有效的字母异位词

知识点:字符串;哈希表

题目描述

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。

示例
输入: s = "anagram", t = "nagaram" 输出: true 输入: s = "rat", t = "car" 输出: false

解法一:排序

直接将两个字符串转化为字符数组,然后调用API排序,这样从前到后应该都是一样的。

class Solution { public boolean isAnagram(String s, String t) { if(s.length() != t.length()) return false; char[] chars = s.toCharArray(); char[] chart = t.toCharArray(); Arrays.sort(chars); Arrays.sort(chart); //或者可以直接调用比较方法判断两个数组是否相等; //Arrays.equals(chars,chart); int i = 0; while(i < s.length()){ if(chars[i] != chart[i]) return false; else i++; } return true; } }

解法二:哈希表

使用哈希表存储第一个字符串中每个字符出现的次数,然后遍历第二个字符串,如果出现新的,直接0-1,如果是有那个字符,那就那个字符的值-1,所以最后只要出现了-1那就false;

class Solution { public boolean isAnagram(String s, String t) { if(s.length() != t.length()) return false; Map<Character, Integer> map = new HashMap<>(); for(Character c : s.toCharArray()){ map.put(c, map.getOrDefault(c, 0)+1); } for(Character c : t.toCharArray()){ map.put(c, map.getOrDefault(c, 0)-1); //有的话其值-1,没有的话直接-1; if(map.get(c) < 0) return false; } return true; } }

__EOF__

本文作者Curryxin
本文链接https://www.cnblogs.com/Curryxin/p/15050694.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Curryxin  阅读(66)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
Live2D
欢迎阅读『【LeetCode】242. 有效的字母异位词』
点击右上角即可分享
微信分享提示