Given two strings s and t which consist of only lowercase letters.
String t is generated by random shuffling string s and then add one more letter at a random position.
Find the letter that was added in t.
Example:
Input: s = "abcd" t = "abcde" Output: e Explanation: 'e' is the letter that was added.我自己的答案:
char findTheDifference(char* s, char* t) {
int counts[26];
int i;
for(i = 0; i < 26; counts[i] = 0, ++i);
// 统计
for (i = 0; i < strlen(s); ++i) {
++counts[s[i] - 'a'];
}
// 查找
for (i = 0; i < strlen(t); ++i) {
--counts[t[i] - 'a'];
if (counts[t[i] - 'a'] < 0) {
return t[i];
}
}
return 1;
}
性能(想死的心都有):
看看别人牛逼的代码:
char findTheDifference(char* s, char* t) {
char ans = 0;
while(*s) {
ans ^= *(s++) ^ *(t++);
}
ans ^= *t;
return ans;
}
重要原理:相同数的异或为0,剩下的那个数就是乱添加的
学习笔记:
多向大佬学习,请收下我的膝盖。