力扣242(java)-有效的字母异位词(简单)
题目:
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
示例 1:
输入: s = "anagram", t = "nagaram"
输出: true
示例 2:
输入: s = "rat", t = "car"
输出: false
提示:
1 <= s.length, t.length <= 5 * 104
s 和 t 仅包含小写字母
进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
来源:力扣(LeetCode)
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
一、哈希映射【数组】
1.先判断两个字符串的长度是否相等,不相等直接返回false;
2.如果相等,则创建一个长度为26的频次数组count,来计算每个字符出现的次数,先遍历s中字符出现的次数,在遍历 t 减去count中对应字符出现的次数,如果数组的值都为0,则说明两个字符串互为字母异位词。

代码:
1 class Solution {
2 public boolean isAnagram(String s, String t) {
3 if(s.length() != t.length()){
4 return false;
5 }
6 int[] count = new int[26];
7 for(int i = 0; i < s.length(); i++){
8 count[s.charAt(i) - 'a']++;
9 }
10 for(int i = 0; i< t.length(); i++){
11 count[t.charAt(i) - 'a']--;
12 }
13 for(int i = 0; i < count.length; i++){
14 if(count[i] != 0){
15 return false;
16 }
17 }
18 return true;
19 }
20 }
二、排序
先判断两个字符串长度是否相等,不相等直接返回false,再将两个字符串转换为字符数组,对两个字符串进行排序,再对两个字符串进行判断是否相等,相等则互为字母异位词。
代码:
1 class Solution {
2 public boolean isAnagram(String s, String t) {
3 if(s.length() != t.length()){
4 return false;
5 }
6 char[] str1 = s.toCharArray();
7 char[] str2 = t.toCharArray();
8 Arrays.sort(str1);
9 Arrays.sort(str2);
10 return Arrays.equals(str1, str2);
11 }
12 }
进阶版:
看的官方的解答,小白我还想不到这个,不明白进阶的意思
对于进阶问题,Unicode 是为了解决传统字符编码的局限性而产生的方案,它为每个语言中的字符规定了一个唯一的二进制编码。而 Unicode 中可能存在一个字符对应多个字节的问题,为了让计算机知道多少字节表示一个字符,面向传输的编码方式的UTF−8 和UTF−16 也随之诞生逐渐广泛使用,具体相关的知识读者可以继续查阅相关资料拓展视野,这里不再展开。
回到本题,进阶问题的核心点在于「字符是离散未知的」,因此我们用哈希表维护对应字符的频次即可。同时读者需要注意 Unicode 一个字符可能对应多个字节的问题,不同语言对于字符串读取处理的方式是不同的。
作者:LeetCode-Solution
链接:https://leetcode.cn/problems/valid-anagram/solution/you-xiao-de-zi-mu-yi-wei-ci-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

小知识:
使用Arrays.equals(str1, str2)方法,比较两个数组元素是否相等
注意:如果两个数组元素值一样,但是两个数组对应位置元素不同,Arrays.equals返回结果是false。
力扣242(java)-有效的字母异位词(简单)的更多相关文章
- Java实现 LeetCode 242 有效的字母异位词
242. 有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 示例 1: 输入: s = "anagram", t = " ...
- leetcode.字符串.242有效的字母异位词-Java
1. 具体题目 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 注:判断两个字符串包含的字母是否完全一样. 示例 1: 输入: s = "anagram&q ...
- LeetCode242 有效的字母异位词(Java字符数组排序&自定义排序记录)
题目: 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 示例 1: 输入: s = "anagram", t = "nagaram& ...
- LeetCode 242. 有效的字母异位词(Valid Anagram)
242. 有效的字母异位词 LeetCode242. Valid Anagram 题目描述 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词. 示例 1: 输入: s ...
- Java实现 LeetCode 49 字母异位词分组
49. 字母异位词分组 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", & ...
- 242 Valid Anagram 有效的字母异位词
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词.例如,s = "anagram",t = "nagaram",返回 true ...
- 前端与算法 leetcode 242. 有效的字母异位词
目录 # 前端与算法 leetcode 242. 有效的字母异位词 题目描述 概要 提示 解析 解法一:哈希表 解法二:数组判断字符出现次数 解法三:转换字符串 算法 传入测试用例的运行结果 执行结果 ...
- 【LeetCode】242. 有效的字母异位词
242. 有效的字母异位词 知识点:字符串:哈希表 题目描述 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 注意:若 s 和 t 中每个字符出现的次数都相同,则称 ...
- Leetcode 242.有效的字母异位词 By Python
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词. 示例 1: 输入: s = "anagram", t = "nagaram" ...
- [LeetCode] 242. 有效的字母异位词 valid-anagram(排序)
注意这里字母异位词的定义是:字母类别及个数都要一样,只是排列顺序不同. class Solution(object): def isAnagram(self, s, t): ""& ...
随机推荐
- 解决Windows下json.hpp中文乱码问题
文中使用的是 json 库,整个库的代码由一个单独的头文件json.hpp组成,用普通的C++11编写的.它没有库,没有子项目,没有依赖关系,没有复杂的构建系统,使用起来很方便. 先引用头文件和命名空 ...
- 关于debian安装完后输入法的问题
sudo apt install ibus-libpinyin后 重启计算机
- .Net接口版本管理与OpenApi
前言 作为开发人员,我们经常向应用程序添加新功能并修改当前的 Api.版本控制使我们能够安全地添加新功能而不会造成中断性变更.一个良好的 Api 版本控制策略可以清晰地传达所做的更改,并允许使用现有 ...
- python计算二进制bin文件hash值
一 hash的价值 hash值的唯一性仅仅在是同一个文件的情况下得到了同样的hash值,而哪怕错误一个字节也会得到不一样的hash值. hash值得最大价值就是唯一性.这样在bin文件检查和校验这块用 ...
- Android Studio 下载jcenter依赖失败问题及解决
优先国内的镜像下载即可 我用的华为和阿里云的国内镜像 google() maven { url 'https://jitpack.io' } maven { url 'http://maven.ali ...
- PyQt5 Ubuntu 16.04/14.04 环境配置
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- 【atcoder begin 302】【e题 Isolation 】JAVA的快速输入输出
import java.io.*; import java.util.HashSet; import java.util.Set; /** * @author fishcanfly */ public ...
- 3DCAT携手华为,打造XR虚拟仿真实训实时云渲染解决方案
2023年5月8日-9日,以 ''因聚而生 众志有为'' 为主题的 ''华为中国合作伙伴大会2023'' 在深圳国际会展中心隆重举行.本次大会汇聚了ICT产业界的广大新老伙伴朋友,共同探讨数字化转型的 ...
- 一天涨 23k Star 的开源项目「GitHub 热点速览」
在 GitHub 上做过开源项目的小伙伴,可能都经历过截图自己项目 100 Star.1000 Star 的时刻,但有些时候事情发生的太快来不及截图,因为可能一觉醒来就破万了.这件事看似有些天方夜谭 ...
- Swift self, Self, ==, === 傻傻分不清楚?
本文首发于 Ficow Shen's Blog,原文地址: Swift self, Self, ==, === 傻傻分不清楚?. 内容概览 前言 self 和 Self == 和 === 总结 前言 ...