问题描述
给定两个字符串 s 和 t,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
示例:
- 输入:
- s = "abcd"
- t = "abcde"
- 输出:
- e
- 解释:
- 'e' 是那个被添加的字母。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-the-difference
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
执行结果
代码描述
思路:定义一个数组,长度为26,索引表示字母,值表示此字母出现的次数。扫描 s ,填充arr, 然后扫描 t ,对出现的进行--,直到遇到一个字母对应的值为0,返回该字母。时间复杂度 O(n), 空间复杂度 O(1)
class Solution {
public:
char findTheDifference(string s, string t) {
int arr[26] = {0};
for(int i = 0; i < s.size(); ++i)
{
++arr[s[i] - 'a'];
}
int i = 0;
for(; i < t.size(); ++i)
{
if(arr[t[i] - 'a'] <= 0)
break;
else
--arr[t[i]-'a'];
}
return t[i];
}
};