389. 找不同
给定两个字符串 s 和 t,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
示例:
输入:
s = "abcd"
t = "abcde"
输出:
e
解释:
‘e’ 是那个被添加的字母。
思路:
读题之后,惯性思维,t 是 s 打乱之后插入一个字符的字符串,所以先排成一个顺序,找到不一样的那个字符就好了。然后是巨复杂的的一段代码。。。。
代码:
class Solution {
public:
char findTheDifference(string s, string t) {
vector<char>a,b;
for (int i = 0; i < s.length(); i++)
{
a.push_back(s[i]);
}
for (int i = 0; i < t.length(); i++)
{
b.push_back(t[i]);
}
sort(a.begin(),a.end());
sort(b.begin(),b.end());
for (int q = 0; q < a.size(); q++)
{
if(a[q]!=b[q])return b[q];
}
return b[b.size()-1];
}
};
反思:
提交之后发现速度垫底。。。赶紧看了看大佬们的题解,,,被自己的惯性思维蠢哭。。。
改进后代码:
class Solution {
public:
char findTheDifference(string s, string t) {
int sum=0;
for (int i = 0; i < t.length(); i++)
{
sum+=t[i];
}
for (int i = 0; i < s.length(); i++)
{
sum-=s[i];
}
return (char)sum;
}
};
哇的一声哭出来