389. Find the Difference(重)
2017-02-21 本文已影响0人
殷水臣
这道题考察字符串操作,需要好好回顾,注意他人高效写法。我自己的效率并不高。
我的解法
初始版本
看着爽跑得慢。
class Solution {
public:
char findTheDifference(string s, string t) {
while (t.length() != 1){
for (int i = 0; i < s.length(); i ++)
t.erase(t.find(s[i]),1);
}
return t[0];
}
};
改进版本
还行但也不算快
class Solution {
public:
char findTheDifference(string s, string t) {
for (int i = 0; i < s.length(); i ++)
t[t.find(s[i])] = '0';
for (int i = 0; i < t.length(); i ++)
if (t[i] != '0')
return t[i];
}
};
他人解法
位运算
虽然老套但是我没想到真SB,效率和我一样,但是比我好看啊。。。
class Solution {
public:
char findTheDifference(string s, string t) {
char r=0;
for(char c:s) r ^=c;
for(char c:t) r ^=c;
return r;
}
};
没找到特别快的怎么写的,先放这好了= =