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 };
原文地址:https://www.cnblogs.com/mengchunchen/p/6034280.html