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;
}
};
哇的一聲哭出來