力扣242.有效的字母异位词

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

示例 1:

复制代码
输入: s = "anagram", t = "nagaram"
输出: true

示例 2:

复制代码
输入: s = "rat", t = "car"
输出: false

提示:

  • 1 <= s.length, t.length <= 5 * 104
  • st 仅包含小写字母

题目分析

这道题要求我们判断俩个字符串是否为字母异位词,我们可以理解为判断字母在俩个字符串中出现的次数是否相同,则我们可以考虑用哈希表。

解题思路

首先我们判断俩个字符串的长度是否相等,如果不相等我们可以直接判断他们俩不相等,因为在俩个字符串中只存在小写字母,所以我们考虑用小写字母的ASCII值来代表各个小写字母的索引,并使每个索引代表的值均为0,然后先遍历第一个字符串,如果遍历到哪个字母,就给相应的索引对应的值+1,然后遍历第二个字符串,给遍历到的字母对应的索引对应的值-1,如果俩个字符串是字母异位词,则遍历完后索引值对应的值应该变回初始值0,如果不同,在第二次遍历的时候,一定会有对应值小于0,便可以得出结果。

复制代码
bool isAnagram(char* s, char* t) {
    int len_s = strlen(s), len_t = strlen(t);
    if(len_s != len_t) {
        return false;
    }
    int table[26];
    memset (table, 0, sizeof(table));
    for(int i = 0; i < len_s; ++i) {
        table[s[i] - 'a']++;
    }
    for(int i = 0; i < len_t; ++i) {
        table[t[i] - 'a']--;
        if(table[t[i] - 'a'] < 0) {
            return false;
        }
    }
    return true;
}
相关推荐
一只小小Java32 分钟前
Naocs本地部署&安装3.2.3+Spring boot 3.2.0
java·spring boot·后端·nacos
JL1538 分钟前
Spring Boot vs Gin:Java 人搭第一个 Go REST API
java·spring boot·gin
神明不懂浪漫1 小时前
【第七章】Java中的常用类
java·开发语言·前端·经验分享·笔记
Adios7947 小时前
设置交集大小至少为2
数据结构·算法·leetcode
shawxlee10 小时前
vue3在public下封装config.js自定义配置动态数据,可在打包后直接修改,方便后端部署及后续维护
前端·javascript·经验分享·vue·团队开发·js·项目优化
Jelena1577958579210 小时前
电商运营分析数据比价接口实战:多平台价格监控与智能决策系统
java·大数据·数据库
kyriewen11 小时前
我给前端项目的接口请求套了6层保护——才发现以前一直在裸奔
前端·javascript·面试
神明不懂浪漫11 小时前
【第五章】Java中的继承与多态
java·开发语言
郝亚军12 小时前
如何安装webstorm、Node.js和vue CLI
前端·javascript·vue.js
AI多Agent协作实战派13 小时前
AI多Agent协作系统实战(十七):凌晨4点,我的AI系统在“假装工作“——3个bug同时爆炸的5小时
java·前端·bug