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

题目描述

力扣题目链接

给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。注意:若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。

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

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

题解

Python

时间复杂度 O ( n ) O(n) O(n),空间复杂度 O ( 1 ) O(1) O(1)

class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        records = dict() # 用于记录每个字母出现的次数

        for i in s:
            if i in records:
                records[i] = records[i] + 1 # s中每出现一次对应value就加一
            else:
                records[i] = 1

        for i in t:
            if i in records:
                records[i] = records[i] - 1 # t中每出现一次对应value就减一
            else:
                return False # t中有s中未出现过的字母

        for i in records:
            if records[i] != 0: # 二者互为字母异位词时字典中所有的value都应为0
                return False
        return True
        

C

时间复杂度 O ( n ) O(n) O(n),空间复杂度 O ( 1 ) O(1) O(1)

bool isAnagram(char *s, char *t){
    int records[26] = {0}; # 借助于ascii码将字符映射到数组中

    for (int i = 0; s[i] != 0; ++i) {
        ++records[s[i] - 97];
    }

    for (int i = 0; t[i] != 0; ++i) {
        --records[t[i] - 97];
    }

    for (int i = 0; i < 26; ++i) {
        if (records[i] != 0) return false;
    }
    return true;
}

你可能感兴趣的:(数据结构与算法,leetcode,算法,python)