給定兩個字符串 s 和 t,它們只包含小寫字母。字符串 t 由字符串 s 隨機重排,然后在隨機位置添加一個字母。請找出在 t 中被添加的字母。
示例:
輸入:
s = "abcd"
t = "abcde"
輸出:
e
解題思路:該題的解法和上一篇我們解決問題的思路一樣,同樣此題我們需要定義兩個數組arr1和arr2分別存儲字符串s和t每一個字符出現的次數,遍歷統計字符串每一個字符出現的次數,最后遍歷,找出arr1和arr2不相等,不相等的坐標存儲的就是字符串t中添加的字符
代碼如下:
public static char findTheDifference(String s,String t) { //定義兩個數組分別存儲字符串s,t每個字符出現次數 int[] arr1 = new int[26]; int[] arr2 = new int[26]; //轉字符 char[] chars1 = s.toCharArray(); char[] chars2 = t.toCharArray(); //兩個數組長度 int len1 = chars1.length; int len2 = chars2.length; //將字符串s的每一字符出現次數添加到對應字符位置中,沒出現一次進行加1操作 for(int i = 0;i<len1;i++) { arr1[chars1[i] - 'a'] += 1; } for(int i = 0;i<len2;i++) { arr2[chars2[i] - 'a'] += 1; } //遍歷數組,找出arr1和arr2中值不相等的,就是要找的對應字符位置,將其轉換輸出 for(int i = 0;i<26;i++) { if(arr1[i]!=arr2[i]) { return (char) (i+97); } } return '0'; }