leetcode之valid anagram

本文介绍了三种编程语言实现的判断两个单词是否为字母异位词的方法:使用C语言通过数组计数字符出现次数;利用C++实现相同的计数逻辑;最后采用Java排序并比较两个字符串。

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

有两种解法,一种是将两个单词按照字母进行排序,在比较排序后的字符串是否相等。第二种解法是建立一个26字母的数组,统计两个字符串的各个字母的出现次数,若相同则一样。

(1)C语言实现

bool isAnagram(char* s, char* t) {
    int count[26]={0};
    //char c;
    for(int i=0;i<strlen(s);i++){
        count[s[i]-'a']++;
    }
    for(int i=0;i<strlen(t);i++){
        count[t[i]-'a']--;
    }
    for(int i=0;i<26;i++){
        if(count[i]!=0)
            return false;
    }
    return true;
}
//解法二:
/*
bool isAnagram(char* s, char* t) {
    int count[26]={0};
    char c;
    while((c=*s++)!='\0'){
        count[c-'a']++;
    }
    while((c=*t++)!='\0'){
        count[c-'a']--;
    }
    for(int i=0;i<26;i++){
        if(count[i]!=0)
            return false;
    }
    return true;
}
*/


(2)C++实现

class Solution {
public:
    bool isAnagram(string s, string t) {
        vector<int> count(26,0);
        for(int i=0;i<s.size();i++){
           // count[s[i]-'a'] = count[s[i]-'a']+1;
           count[s[i]-'a']++;
        }
        for(int i=0;i<t.length();i++){
            //count[t[i]-'a'] = count[t[i]-'a']-1;
            count[t[i]-'a']--;
        }
        for(int i=0;i<26;i++){
            if(count[i]!=0)
                return false;
        }
        return true;
    }
};


//解法二
/*
class Solution {
public:
    bool isAnagram(string s, string t) {
        sort(s.begin(), s.end());
        sort(t.begin(), t.end());
        return s==t;
    }
};
*/


(3)java实现

public class Solution {
    public boolean isAnagram(String s, String t) {
       char[] a = s.toCharArray();
       char[] b = t.toCharArray();
       Arrays.sort(a);
       Arrays.sort(b);
       return String.valueOf(a).equals(String.valueOf(b));
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值