LeetCode-389. Find the Difference (Java)

参考地址:http://www.cnblogs.com/styshoo/p/5922397.html

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中所有字符值的和减去字符串s中字符值的和即可

public char findTheDifference(String s, String t) {
    int ret = 0;
    for (int i = 0; i < s.length(); i++) {
        ret -= (int)s.charAt(i);
    }
    for (int i = 0; i < t.length(); i++) {
        ret += (int)t.charAt(i);
    }
    return (char)ret;
}

方法二, 另外一种思路,既然字符串t只比字符串s多了一个字符,也就是说大部分字符都是相同的。那么,我们可以使用异或的方式,来找出这个不同的值

public char findTheDifference(String s, String t) {
    int ret = 0;
    for (int i = 0; i < s.length(); i++) {
        ret ^= s.charAt(i);
    }
    for (int i = 0; i < t.length(); i++) {
        ret ^= t.charAt(i);
    }
    return (char)ret;
}



你可能感兴趣的:(实实在在刷点题,LeetCode,Find,the,Difference,Java)