【力扣】389.找不同

简介: 【力扣】389.找不同

389.找不同

题目描述

给定两个字符串 st ,它们只包含小写字母。

字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。

请找出在 t 中被添加的字母。

示例 1:

输入:s = “abcd”, t = “abcde”

输出:“e”

解释:‘e’ 是那个被添加的字母。

示例 2:

输入:s = “”, t = “y”

输出:“y”

提示:

  • 0 <= s.length <= 1000
  • t.length == s.length + 1
  • s 和 t 只包含小写字母

解题方法

  • C 字母表
char findTheDifference(char* s, char* t) {
    int alphabet[26] = {0};
    int i = 0;

    for (i = 0; i < strlen(s); i++) {
        alphabet[s[i] - 'a']++;
    }

    for (i = 0; i < strlen(t); i++) {
        alphabet[t[i] - 'a']--;
    }

    for (i = 0; i < 26; i++) {
        if (alphabet[i] < 0) {
            return i + 'a';
        }
    }
    return 'a';
}

复杂度分析

时间复杂度为 O(N),其中 N 为字符串的长度。

空间复杂度为 O(∣Σ∣),其中 Σ 是字符集 26。

  • C 求两个字符串各自 ASCII 总和、再求差
char findTheDifference(char* s, char* t) {
    int ss = 0, st = 0;
    int i = 0;

    for (i = 0; i < strlen(s); i++) {
        ss += s[i];
    }

    for (i = 0; i < strlen(t); i++) {
        st += t[i];
    }

    return st - ss;
}

复杂度分析

时间复杂度为 O(N)。

空间复杂度为 O(1)。

相关文章
|
6月前
leetcode-1518:换酒问题
leetcode-1518:换酒问题
33 0
|
6月前
|
算法
leetcode:389. 找不同
leetcode:389. 找不同
27 0
|
6月前
|
消息中间件 Kubernetes NoSQL
LeetCode 3、28、1351
LeetCode 3、28、1351
单链表反转 LeetCode 206
单链表反转 LeetCode 206
73 0
顺手牵羊(LeetCode844.)
好多同学说这是双指针法,但是我认为叫它顺手牵羊法更合适
78 0
leetcode 827 最大人工岛
leetcode 827 最大人工岛
59 0
leetcode 827 最大人工岛
|
算法 Python
LeetCode 386. Lexicographical Numbers
给定一个整数 n, 返回从 1 到 n 的字典顺序。
84 0
LeetCode 386. Lexicographical Numbers
|
存储 Python
LeetCode 66. Plus One
给定表示非负整数的非空数字数组,加上整数的1。 存储数字使得最高有效数字位于列表的开头,并且数组中的每个元素包含单个数字。 您可以假设整数不包含任何前导零,除了数字0本身。
91 0
LeetCode 66. Plus One
|
C++ Python
LeetCode 771. Jewels and Stones
LeetCode 771. Jewels and Stones
80 0
|
算法
leetcode第47题
基本上都是在上道题的基础上改出来了,一些技巧也是经常遇到,比如先排序,然后判断和前一个是否重复。利用 Hash 去重的功能。利用原来的存储空间隐藏掉数据,然后再想办法还原。
leetcode第47题