题目:
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.
链接:https://leetcode.com/problems/find-the-difference/#/description
3/20/2017
最后一行如何返回会更好?
1 public class Solution { 2 public char findTheDifference(String s, String t) { 3 int[] cs = new int[256]; 4 int[] ct = new int[256]; 5 6 for (int i = 0; i < s.length(); i++) 7 cs[s.charAt(i)]++; 8 for (int i = 0; i < t.length(); i++) 9 ct[t.charAt(i)]++; 10 for (int i = 0; i < 256; i++) { 11 if (ct[(char)i] > cs[(char)i]) return (char)i; 12 } 13 return '0'; 14 } 15 }
别人的非常好的方法,位运算:
https://discuss.leetcode.com/topic/55912/java-solution-using-bit-manipulation
1 public char findTheDifference(String s, String t) { 2 int n = t.length(); 3 char c = t.charAt(n - 1); 4 for (int i = 0; i < n - 1; ++i) { 5 c ^= s.charAt(i); 6 c ^= t.charAt(i); 7 } 8 return c; 9 }
类似的用char对int的值
1 public char findTheDifference(String s, String t) { 2 int charCode = t.charAt(s.length()); 3 // Iterate through both strings and char codes 4 for (int i = 0; i < s.length(); ++i) { 5 charCode -= (int)s.charAt(i); 6 charCode += (int)t.charAt(i); 7 } 8 return (char)charCode; 9 }