哈希映射有效的字母异位词

53次阅读

共计 561 个字符,预计需要花费 2 分钟才能阅读完成。

南朝四百八十寺
多少楼台烟雨中

前言

本题摘自 LeetCode 第 242 题,有效的字母异位词,

题目描述

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

事例 1:

输入: s = "anagram", t = "nagaram"
输出: true

事例 2:

输入: s = "rat", t = "car"
输出: false

解题思想

1. 初始化两个数组(理解为哈希表),对应 26 个英文字母,开始值都为 0
int a[26] = {0};
int b[26] = {0};
2. 分别遍历 s、t 字符串的中的字符,给字符在数组中的位置值进行加加操作
3. 对比 a、b 数组中的值是否一致

C 语言代码实现

    BOOL isVaildAgment(char *s, char *t) {int lengthS = strlen(s);
        int lengthT = strlen(t);
        
        int a[26] = {0};
        int b[26] = {0};
        
        for (NSInteger i = 0; i < lengthS; i++) {int index = s[i]-'a';
            a[index] = 1;
        }
        for (NSInteger i = 0; i < lengthT; i++) {int index = t[i]-'a';
            b[index] = 1;
        }
        for (NSInteger i = 0; i < 26; i++) {if (a[i] != b[i]) {return false;}
        }
        return true;
    }

正文完
 0