給定兩個字串 s 和 t,它們只包含小寫字母。字串 t 由字串 s 隨機重排,然後在隨機位置新增乙個字母。
請找出在 t 中被新增的字母。
示例 1:輸入:s = "abcd", t = "abcde"
輸出:"e"
解釋:'e' 是那個被新增的字母。
示例 2:
輸入:s = "", t = "y"
輸出:"y"
示例 3:
輸入:s = "a", t = "aa"
輸出:"a"
示例 4:
輸入:s = "ae", t = "aea"
輸出:"a"
0 <= s.length <= 1000t.length == s.length + 1
s 和 t 只包含小寫字母
【方法一】計數題目說了只有小寫字母(26個),可以設定乙個大小為26的陣列,儲存對應字母的數量。掃瞄s串時,陣列加一;掃瞄t串時,陣列減一。最終陣列中不等於0的元素對應的字母即為所求。
注:如果改變字母的型別,用陣列表示某些資料可能會有些困難,不過可以用acsll碼的值作為下標。
class solution
cnt[t.charat(lens)-'a']--;
char ans = 'a';
for (int i = 0; i < 26; i++) // 找多餘的字母
if (cnt[i] != 0)
return ans;
}}
【方法二】ascii碼求和對兩個字串的ascii分別求和,用t串的和減去s串的和,即為所求字母。
注:如果字串的長度較長,會導致sum溢位。
class solution
return (char)(sum_t - sum_s); // 作差
}}
【方法三】異或(最優的解法)對兩個串進行異或運算,最後單出的字母即為所求。
class solution
return (char)ans;
}}
leetCode 389 找不同 簡單
給定兩個字串 s 和 t,它們只包含小寫字母。字串 t 由字串 s 隨機重排,然後在隨機位置新增乙個字母。請找出在 t 中被新增的字母。遍歷s中的字元進行計數,再遍歷t中的字元將對應的字元數量 如果t中乙個字元的數量為0那麼該字元為新增的字元。class solution for int i 0 i...
LeetCode389 找不同 查詢
查詢問題,最先想到map和set 一開始覺得用set即可,因為把s的內容存進去,對t進行遍歷,不在裡面的肯定就是新增加的了 public char findthedifference string s,string t char result for int i 0 i return result ...
leetcode題目 389 找不同
給定兩個字串 s 和 t,它們只包含小寫字母。字串 t 由字串 s 隨機重排,然後在隨機位置新增乙個字母。請找出在 t 中被新增的字母。輸入 s abcd t abcde 輸出 e 解釋 e 是那個被新增的字母。先用hashmap統計t t為較長的那個字串 的字母頻率,然後再遍歷s的字母,遇到乙個字...