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.
题意:给出两个字符串,其中t串比s串中多一个字母,其余字母都相等。求出t串中多的那个字母。
思路一:开辟一个大小为26的数组,对于s中出现的字母,相应位置的值加1;对于t中出现的字母,相应位置减1。最后值为-1的位置对应的字母即为所求。
class Solution {
public:
int aa[26]={0};
char findTheDifference(string s, string t) {
for(int i=0;i<s.length();i++)
aa[s[i]-'a']++;
for(int i=0;i<t.length();i++)
aa[t[i]-'a']--;
char ch;
for(int j=0;j<t.length();j++){
if(aa[t[j]-'a']==-1)
return t[j];
}
return ch;
}
};
思路二:因为s串与t串中的字母只有一处不同,可以将s串与t串一起异或,最后得到的即为单独存在的字母,也即t串比s串多的字母。
class Solution {
public:
char findTheDifference(string s, string t) {
char ch=0;
for(char c:s) ch^=c;
for(char c:t) ch^=c;
return ch;
}
};