*389. Find the Difference (string + map(26)) read problems carefully

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.

 

class Solution {
    public char findTheDifference(String s, String t) {
        //in the middle(start) or  in the end
        //get small length
        int sn = s.length();
        int tn = t.length();
        if(sn > tn)
        return helper(s,t);
        else return helper(t,s);
    }
    char helper(String l, String s){ // larger and smaller
        int[] a = new int[26];
        int[] b = new int[26];
        for(int i = 0; i<l.length(); i++){
            a[l.charAt(i) - 'a'] ++;
        }
        for(int i = 0; i<s.length(); i++){
            b[s.charAt(i) - 'a'] ++;
        }
        for(int i = 0; i<26; i++){
            if(a[i] != b[i]) return (char)(i+'a');
        }
        return 'a';
    }
}

 

posted @ 2018-06-08 23:29  wz30  阅读(119)  评论(0编辑  收藏  举报