leetcode题解:389.找不同

简介: leetcode题解: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
  • st 只包含小写字母

思路

1.由于只添加一个字母,那么s和t其余的字母都相同,相同字母的ascii值的和也相同

2.由于确定了在t中添加字母,使用ascii值的差,可以找出被添加的字母

将字符串 s 中每个字符的 ASCII 码的值求和,得到 As

对字符串 t 同样的方法得到 At

两者的差值 At−As即代表了被添加的字符。

复杂度分析

  • 时间复杂度:O(N)O(N)O(N)。
  • 空间复杂度:O(1)O(1)O(1)。

题解

class Solution {
public:
    char findTheDifference(string s, string t) {
        int as = 0, at = 0;
        for (char ch : s) {
            as += ch;
        }
        for (char ch : t) {
            at += ch;
        }
        return at-as;
    }
};

推荐学习 https://xxetb.xetslk.com/s/p5Ibb

目录
相关文章
|
7月前
LeetCode题:174. 地下城游戏
LeetCode题:174. 地下城游戏
68 0
LeetCode题:174. 地下城游戏
|
7月前
|
数据安全/隐私保护 C++ 索引
【一刷《剑指Offer》】面试题 4:替换空格
【一刷《剑指Offer》】面试题 4:替换空格
|
7月前
|
算法 搜索推荐 程序员
C语言第三十四练——01背包
C语言第三十四练——01背包
55 0
LeetCode题:1:两数之和
LeetCode题:1:两数之和
46 0
|
算法
代码随想录算法训练营第七天 | LeetCode 454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
代码随想录算法训练营第七天 | LeetCode 454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
47 0
代码随想录算法训练营第七天| 454.四数相加II 383. 赎金信15. 三数之和18. 四数之和
代码随想录算法训练营第七天| 454.四数相加II 383. 赎金信15. 三数之和18. 四数之和
|
算法 测试技术 Android开发
LeetCode 周赛上分之旅 # 36 KMP 字符串匹配殊途同归
学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场 LeetCode 周赛的解题报告,一起体会上分之旅。
84 0
ACM刷题之路(二十二)多重背包转01背包 HDU 1171
ACM刷题之路(二十二)多重背包转01背包 HDU 1171
|
算法
KMP算法——我欲修仙(功法篇)
KMP算法——我欲修仙(功法篇)
113 0
|
人工智能 算法 容器
从六道leetcode题掌握双指针
双指针从广义上来说,是指用两个变量在线性结构上遍历而解决的问题。狭义上说, 对于数组,指两个变量在数组上相向移动解决的问题; 对于链表,指两个变量在链表上同向移动解决的问题,也称为「快慢指针」问题。 双指针算法通常不难,双指针算法是基于暴力解法的优化,它们是很好的学习算法的入门问题