找出两个字符串的不同之处
描述
给定一个字符串 s , 构造一个字符串 t,t 为 s 的一个排列,然后随机的在 t 的任 1 位置添加一个任意字符,要求需要找出这个字符。
样例
1 | 输入: s = "abc" t = "abck" |
思路
统计每个字符出现的次数,比较 s 和 t 的统计结果,发现不同则可以返回这个字符。另一种方案是将t 字符串所有的字符加起来,然后减去 s 字符串的累加结果,得到的差值便是这个差异字符的 ASCLL 码,当然这一步也可以利用异或来完成。
代码
1 | class Solution { |
统计次数的代码:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18class Solution {
public:
char findTheDifference(string s, string t) {
unordered_map<char, int> m;
for (auto c : s) { m[c]++; }
char res;
for (auto c : t) {
if (m[c] <= 0) {
res = c;
break;
}
else {
m[c]--;
}
}
return res;
}
};