leetcode 389. Find the Difference
Problem
Solutions
1.Array
To solve this problem. Firstly, i’d like to build an array with length of 26, where each element represents a lowercase letter. So that using this array. Firstly, I visit each character t and make the corresponding position add one. And then I visit each character in the t, and I make the corresponding elements minus one. Finally, I will finally, visit the array, which I built to find out which position equals to one? And I make the position add lowercase a to get the result.
class Solution {
public char findTheDifference(String s, String t) {
int[] alphabet = new int[26];
for(char c : s.toCharArray()){
alphabet[c - 'a']++;
}
for(char c : t.toCharArray()){
alphabet[c - 'a']--;
}
for(int i = 0; i < 26; i++){
if(alphabet[i] != 0) return (char)(i + 'a');
}
return 'a';
}
}
2.Bit-manipulation
We can also make all the letters in the s and t xor with each other so that we can get the result.
class Solution {
public char findTheDifference(String s, String t) {
char res = 0;
for(char c : s.toCharArray()){
res ^= c;
}
for(char c : t.toCharArray()){
res ^= c;
}
return res;
}
}