【力扣 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代码

cpp 复制代码
/*
 * @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
相关推荐
java1234_小锋10 小时前
Java高频面试题:Springboot的自动配置原理?
java·spring boot·面试
末央&11 小时前
【天机论坛】项目环境搭建和数据库设计
java·数据库
枫叶落雨22211 小时前
ShardingSphere 介绍
java
花花鱼11 小时前
Spring Security 与 Spring MVC
java·spring·mvc
小白菜又菜12 小时前
Leetcode 2075. Decode the Slanted Ciphertext
算法·leetcode·职场和发展
言慢行善12 小时前
sqlserver模糊查询问题
java·数据库·sqlserver
专吃海绵宝宝菠萝屋的派大星12 小时前
使用Dify对接自己开发的mcp
java·服务器·前端
大数据新鸟12 小时前
操作系统之虚拟内存
java·服务器·网络
Tong Z12 小时前
常见的限流算法和实现原理
java·开发语言
凭君语未可12 小时前
Java 中的实现类是什么
java·开发语言