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

目录
相关文章
|
算法
AcWing刷题(第二周)(链表,单调栈等......)
AcWing刷题(第二周)(链表,单调栈等......)
73 0
|
11月前
LeetCode题:1:两数之和
LeetCode题:1:两数之和
35 0
【牛客】二叉树遍历
【牛客】二叉树遍历
53 0
|
人工智能 算法 容器
从六道leetcode题掌握双指针
双指针从广义上来说,是指用两个变量在线性结构上遍历而解决的问题。狭义上说, 对于数组,指两个变量在数组上相向移动解决的问题; 对于链表,指两个变量在链表上同向移动解决的问题,也称为「快慢指针」问题。 双指针算法通常不难,双指针算法是基于暴力解法的优化,它们是很好的学习算法的入门问题
牛客 买礼物(链表 线段树)
牛客 买礼物(链表 线段树)
63 0
牛客 买礼物(链表 线段树)
LeetCode题【换零钱问题汇总】
LeetCode题【换零钱问题汇总】
90 0
|
算法 前端开发 程序员
「LeetCode」剑指Offer-58-II左旋转字符串⚡️
「LeetCode」剑指Offer-58-II左旋转字符串⚡️
152 0
「LeetCode」剑指Offer-58-II左旋转字符串⚡️
|
算法 前端开发 程序员
「LeetCode」剑指Offer-14-I剪绳子⚡️
「LeetCode」剑指Offer-14-I剪绳子⚡️
108 0
「LeetCode」剑指Offer-14-I剪绳子⚡️
|
算法 前端开发 程序员
「LeetCode」剑指Offer-14-II剪绳子II⚡️
「LeetCode」剑指Offer-14-II剪绳子II⚡️
119 0
「LeetCode」剑指Offer-14-II剪绳子II⚡️
|
算法 前端开发 程序员
「LeetCode」剑指Offer-10-II 青蛙跳台阶问题⚡️
「LeetCode」剑指Offer-10-II 青蛙跳台阶问题⚡️
137 0
「LeetCode」剑指Offer-10-II 青蛙跳台阶问题⚡️