题目描述:
给定两个字符串 s
和 t
,它们只包含小写字母。
字符串 t
由字符串 s
随机重排,然后在随机位置添加一个字母。
请找出在 t
中被添加的字母。
示例 1:
输入:s = "abcd", t = "abcde"
输出:"e"
解释:'e' 是那个被添加的字母。
示例 2:输入:s = "", t = "y"
输出:"y"
方法一:数组计数(C++代码)
class Solution {
public:
char findTheDifference(string s, string t) { //方法一:数组计数
vector<int> v;
v.resize(26);
for(char a : s){
v[a - 'a']++;
}
for(char b : t){
v[b - 'a']--;
if(v[b - 'a'] < 0){
return b;
}
}
return ' ';
}
};
时间复杂度:O(N),其中 N 为字符串的长度。
空间复杂度:O(∣Σ∣),其中 Σ 是字符集,这道题中字符串只包含小写字母,∣Σ∣=26。需要使用数组对每个字符计数。