389. Find the Difference
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.
s是一串随机的字符串,将s的每个字母打乱后,再加入一个字母,形成字符串t,问加入的是哪个字母
Bit Manipulation:
C++(3ms):
class Solution { public: char findTheDifference(string s, string t) { int res = t[t.size()-1] ; for(int i = 0 ; i < s.size() ; i++){ res ^= s[i] ^ t[i] ; } return (char)res ; } };
java(7ms):
1 class Solution { 2 public char findTheDifference(String s, String t) { 3 char res = t.charAt(t.length()-1) ; 4 for(int i = 0 ; i < s.length() ; i++){ 5 res ^= s.charAt(i) ^ t.charAt(i) ; 6 } 7 return res ; 8 } 9 }
java(6ms):
1 public class Solution { 2 public char findTheDifference(String s, String t) { 3 char[] ss = s.toCharArray() ; 4 char[] tt = t.toCharArray() ; 5 int slen = s.length() ; 6 int sum = 0 ; 7 int i ; 8 for (i = 0 ; i < slen ; i++){ 9 sum -= (int)ss[i] ; 10 sum += (int)tt[i] ; 11 } 12 sum += (int)tt[i] ; 13 14 return (char)sum; 15 } 16 }
C++(3ms):
1 class Solution { 2 public: 3 char findTheDifference(string s, string t) { 4 int sum = 0 ; 5 int i ; 6 for(i = 0 ; i < s.size() ; i++){ 7 sum -= (int)s[i] ; 8 sum += (int)t[i] ; 9 } 10 sum += (int)t[i] ; 11 return (char)sum ; 12 } 13 };