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

目录
相关文章
LeetCode题【换零钱问题汇总】
LeetCode题【换零钱问题汇总】
122 0
|
人工智能 算法 容器
从六道leetcode题掌握双指针
双指针从广义上来说,是指用两个变量在线性结构上遍历而解决的问题。狭义上说, 对于数组,指两个变量在数组上相向移动解决的问题; 对于链表,指两个变量在链表上同向移动解决的问题,也称为「快慢指针」问题。 双指针算法通常不难,双指针算法是基于暴力解法的优化,它们是很好的学习算法的入门问题
|
算法 C++
【快乐手撕LeetCode题解系列】——合并两个有序数组
哈喽各位友友们😊,我今天又学到了很多有趣的知识,现在迫不及待的想和大家分享一下!😘我仅已此文,和大家分享【快乐手撕LeetCode题解系列】——合并两个有序数组~ 都是精华内容,可不要错过哟!!!😍😍😍
78 0
|
安全 C语言
农民工学CSAPP题目解析-前篇题目解答以及答疑总结
农民工学CSAPP题目解析-前篇题目解答以及答疑总结
170 0
农民工学CSAPP题目解析-前篇题目解答以及答疑总结
|
算法
『牛客|每日一题』逆波兰表达式
基础算法无论在研究生面试还是求职面试都是十分重要的一环,这里推荐一款算法面试神器:牛客网-面试神器;算法题只有多刷勤刷才能保持思路与手感,大家赶紧行动起来吧(温馨提示:常见的面试问答题库也很nice哦 https://www.nowcoder.com/link/pc_csdncpt_ll_sf
96 0
『牛客|每日一题』逆波兰表达式
|
机器学习/深度学习 算法
LeetCode题解—重建二叉树
今天继续二叉树相关的算法题
107 0
|
编译器 测试技术 C++
听说三数之和是你梦碎的地方?Leetcode每日刷题(day1)(上)
听说三数之和是你梦碎的地方?Leetcode每日刷题(day1)
听说三数之和是你梦碎的地方?Leetcode每日刷题(day1)(上)

热门文章

最新文章