389. Find the Difference
程序员文章站
2022-04-24 21:50:29
...
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,剩下的那个数就是乱添加的
学习笔记:
多向大佬学习,请收下我的膝盖。
推荐阅读
-
leetcode 442. Find All Duplicates in an Array
-
【OpenCV】之find_obj基础上的局部图像透视变换
-
TP5中find_in_set的用法
-
OPPO宣布如期参加MWC!发布新旗舰Find X2
-
webpack-dev-server config.js Cannot find module
-
OSError: [E050] Can't find model 'en_core_web_sm'. It doesn't seem to be a shortcut link, a Python p
-
Error:Could not find common.jar (android.arch.core:common:1.0.0)
-
Percona-Tookit工具包之pt-slave-find
-
添加从节点是出现ERROR 1017 (HY000): Can’t find file
-
JavaScript数组迭代方法:forEach(),map(),filter(),reduce(),every(),some(),indexOf(),lastIndexOf(),find()