LeetCode------Valid Anagram

本文介绍了通过排序和计数两种方法来判断两个字符串是否为变形词。首先将字符串转换为字符数组并排序,然后使用compareTo函数进行比较;第二种方法则是通过一个长度为26的数组来记录每个字符的出现次数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目简介


Given two strings s and t, write a function to determine if t is an anagram of s.

For example,
s = "anagram", t = "nagaram", return true.
s = "rat", t = "car", return false.

Note:
You may assume the string contains only lowercase alphabets.

Follow up:
What if the inputs contain unicode characters? How would you adapt your solution to such case?



自己的解法  


public class Solution {
    public boolean isAnagram(String s, String t) {
        if(s.length()!=t.length())
        rheturn false;
        char [] S =s.toCharArray();
        char [] T =t.toCharArray();
        Arrays.sort(S);
        Arrays.sort(T);
        String news = new String(S);
        String newt = new String(T);
        if(news.compareTo(newt)==0)
        return true;
        else
        return false;
    }
}


题目大意是给你两个字符串,判断它们是不是变形词。我的思路是先将两个字符串转换成字符数组,这样就可以利用Arrays.sort函数排序,排序后再将他们重新变成String类型,利用compareTo函数比较两个字符串,如果是0,就相同。如果返回的是其它的数字就是false。有些小伙伴可能对compareTo函数不熟悉。

java中的compareto方法,按字典排列顺序对两个字符串进行大小分析没如果当前字符串与参数中指定的字符串完全相同(包括大小写),则返回0;如果当前字符串在字典中的顺序先于(即小于)参数中的字符串,则返回小于0的int整数;否则,返回大于0的int型数。
用法是这样
String S,T;
S.compareTo(T);
还有一个方法是compareToIgnoreCase,顾名思义就是忽略大小写,其它的和compareto方法一样。



Hot解法


public class Solution {
    public boolean isAnagram(String s, String t) {
        int[] alphabet = new int[26];
        for (int i = 0; i < s.length(); i++) alphabet[s.charAt(i) - 'a']++;
        for (int i = 0; i < t.length(); i++) alphabet[t.charAt(i) - 'a']--;
        for (int i : alphabet) if (i != 0) return false;
        return true;
    }
}




Hot解法的思路是先定义一个int型的数组,大小是26,分别遍历两个字符串,在第一次遍历中将出现的字母在对应的数组里增加,在第二次遍历中减少。最后判断数组是不是每个数据都是0,如果不是就返回false,如果是就返回true。但是Hot解法可能字符串包含unicode码就不适用了,只适用于英文字符串。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值