摘要:題目同構字符串給定兩個字符串和,判斷它們是否是同構的。所有出現的字符都必須用另一個字符替換,同時保留字符的順序。若找到為的則與比較,不相等則不為同構,相等就繼續向下。循環結束后沒有中途即為同構字符串返回。
題目: 同構字符串給定兩個字符串 s 和 t,判斷它們是否是同構的。 如果 s 中的字符可以被替換得到 t ,那么這兩個字符串是同構的。 所有出現的字符都必須用另一個字符替換,同時保留字符的順序。兩個字符不能映射到同一個字符上,但字符可以映射自己本身。示例:
輸入: s = "egg", t = "add" 輸出: true 輸入: s = "foo", t = "bar" 輸出: false 輸入: s = "paper", t = "title" 輸出: true思考:
這道題主要是要判斷兩個字符串相同位置字符的對應關系。 用兩個HashMap來保存這種對應關系,map1存放s中字符與t中相同位置字符對應關系,map2存放t中字符與s中相同位置字符對應關系。 循環取得兩個字符串中相同位置的字符c1,c2,在map1中尋找key為c1的value,若沒找到就將c1、c2作為key、value加入map1。 若map1找到key為c1的value則與c2比較,不相等則不為同構,相等就繼續向下。 同樣在map2中尋找key為c2的value,若沒找到就將c2、c1作為key、value加入map2。 若map2找到key為c2的value則與c1比較,不相等則不為同構,相等就繼續向下。 循環結束后沒有中途return即為同構字符串返回true。實現:
class Solution { public boolean isIsomorphic(String s, String t) { Mapmap1 = new HashMap<>(); Map map2 = new HashMap<>(); for (int count = 0; count < s.length(); count++) { char c1 = s.charAt(count); char c2 = t.charAt(count); if (map1.containsKey(c1)) { if (map1.get(c1) != c2) return false; } else { map1.put(c1, c2); } if (map2.containsKey(c2)) { if (map2.get(c2) != c1) return false; } else { map2.put(c2, c1); } } return true; } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/6950.html
摘要:每日一題親密字符串鏈接親密字符串題目分析題目本身不是很難,但是有不少需要注意的地方,逐一來進行分析。首先如果兩個字符串不一樣長,那么肯定是。 leetcode每日一...
摘要:每日一題從英文中重建數字鏈接從英文中重建數字題目分析首先我們先分析每個字母的組成,然后發現一些字符只在一個單詞中出現,我們先去統計一下這些單詞個數。統計完次數,按升序排列即可。 ...
摘要:每日一題檢測大寫字母鏈接檢測大寫字母題目分析模擬分析題遍歷一下字符串統計一下其中的大小寫字母然后根據大小寫字母的數量判斷即可代碼統計大寫小寫字母的數量這里使用是為了避免其他字符的干擾如果字符串都是大寫小寫字母 ...
摘要:每日一題叉樹的最大深度鏈接叉樹的最大深度題目分析簡單的搜索題目。只需要從根節點開始一下整個叉樹就可以得到答案了。主要是對要理解和掌握叉樹的遍歷。代碼作者作者 lee...
摘要:每日一題平衡二叉樹鏈接平衡二叉樹題目分析遍歷樹,然后每次判斷樹的左右兩個子樹的差值即可。 leetcode每日一題-110:平衡二叉樹 鏈接 平衡二叉樹 題目 ...
閱讀 2804·2021-11-24 09:39
閱讀 2777·2021-09-23 11:45
閱讀 3403·2019-08-30 12:49
閱讀 3352·2019-08-30 11:18
閱讀 1908·2019-08-29 16:42
閱讀 3344·2019-08-29 16:35
閱讀 1321·2019-08-29 11:21
閱讀 1912·2019-08-26 13:49