摘要:題目地址題目描述給定兩個字符串和,它們只包含小寫字母。字符串由字符串隨機重排,然后在隨機位置添加一個字母。示例輸入輸出解釋是那個被添加的字母。解答這一題可以用兩種解法。
題目地址:
https://leetcode-cn.com/probl...
題目描述:
給定兩個字符串 s 和 t,它們只包含小寫字母。
字符串 t 由字符串 s 隨機重排,然后在隨機位置添加一個字母。
請找出在 t 中被添加的字母。
示例:
輸入:
s = "abcd"
t = "abcde"
輸出:
e
解釋:
"e" 是那個被添加的字母。
解答:
這一題可以用兩種解法。
解法一:利用hash表存儲第一個字符串的字母的數量,然后遍歷第二個字符串的時候
先查找到字母,然后把數量減一,如果減完之后小于0,說明這個字母就是多出來的字母
這里的hash表可以用一個數組來代替,因為這里不需要解決hash沖突!!!
java ac代碼:
class Solution { public char findTheDifference(String s, String t) { int[] hash = new int["z"+1]; for(int i = 0;i < s.length();i++) hash[s.charAt(i)]++; for(int i = 0;i < t.length();i++) if( --hash[t.charAt(i)] < 0) return t.charAt(i); return " "; } }
解法二:把這題看作是一個數組里除了一個數出現了一次,其他都出現了偶數次,然后找出這個數,可以
利用異或,因為偶數個自己異或自己為0,而0異或一個數就等于那個數本身,比如說,有偶數個a,現在這
偶數個a異或結果為0,a^a^a^a...^a=0,而0^b=b。
java ac代碼
class Solution { public char findTheDifference(String s, String t) { char ans = 0; for(int i = 0;i < s.length();i++) ans ^= s.charAt(i); for(int i = 0;i < t.length();i++) ans ^= t.charAt(i); return ans; } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72916.html
摘要:題目鏈接題目分析給定兩個字符串,其中一個字符串比另一個字符串在隨機位置多一個字符。思路用計算字符串中字符出現的次數,對比兩個字符串的字符出現次數。計算差集,返回差異部分即可。最終代碼若覺得本文章對你有用,歡迎用愛發電資助。 D73 389. Find the Difference 題目鏈接 389. Find the Difference 題目分析 給定兩個字符串,其中一個字符串比另一...
摘要:圖因此可以成為樹,在所有可能的樹中,具有最小高度的樹被稱為最小高度樹。給出這樣的一個圖,寫出一個函數找到所有的最小高度樹并返回他們的根節點。因此使用一個數組代表每個節點的入度,若入度為就是葉子節點。 題目地址:https://leetcode-cn.com/probl...題目描述: 對于一個具有樹特征的無向圖,我們可選擇任何一個節點作為根。圖因此可以成為樹,在所有可能的樹中,具有最小...
摘要:關于遞歸這里提一兩點遞歸基本有這幾步遞歸的模板,終止條件,遞歸調用,邏輯處理。 ?作者簡介:大家好,我是車神哥,府學路18號的車神? ?個人主頁:應無所住而生...
摘要:題目要求假設兩個只包含小寫字母的字符串和,其中是中字母的亂序,并在某個位置上添加了一個新的字母。最后只需要遍歷整數數組檢查是否有某個字符計數大于。 題目要求 Given two strings s and t which consist of only lowercase letters. String t is generated by random shuffling strin...
閱讀 2259·2021-08-23 09:46
閱讀 908·2019-08-29 18:31
閱讀 1861·2019-08-29 17:04
閱讀 2446·2019-08-29 12:23
閱讀 1851·2019-08-26 14:05
閱讀 1074·2019-08-26 13:44
閱讀 3140·2019-08-26 12:23
閱讀 2199·2019-08-26 10:46