欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 【力扣 389】找不同 C++题解(字符串+排序)

【力扣 389】找不同 C++题解(字符串+排序)

2024/10/25 6:22:35 来源:https://blog.csdn.net/qq_34988204/article/details/135750341  浏览:    关键词:【力扣 389】找不同 C++题解(字符串+排序)

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

字符串 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 只包含小写字母


思路

首先对st进行排序。这样,如果st是相同的(除了t多一个字符),那么排序后的st应该是几乎相同的,只是t在某个地方多了一个字符。

然后,函数定义了两个迭代器it1it2,分别指向st的开始。接着,有一个循环,只要it1没有到达s的末尾,就比较it1it2指向的字符。如果这两个字符不同,那么it2指向的字符就是t相对于s多出的那个字符,因此函数返回*it2

如果循环结束时还没有找到不同的字符,那么t相对于s多出的字符一定是t的最后一个字符。因此,函数返回t的最后一个字符,即*t.rbegin()


AC代码

/** @lc app=leetcode.cn id=389 lang=cpp** [389] 找不同*/// @lc code=start
class Solution {public:char findTheDifference(string s, string t) {sort(s.begin(), s.end());sort(t.begin(), t.end());auto it1 = s.begin();auto it2 = t.begin();for (; it1 != s.end(); it1++, it2++) {if (*it1 != *it2) {return *it2;}}return *t.rbegin();}
};
// @lc code=end

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com