【leetcode】205. 同構字串
阿新 • • 發佈:2019-01-22
先判斷這兩個字串長度是否相同,如果不相同,那麼肯定不是同構字串
如果長度相同,再繼續判斷兩個字串是不是完全相等,這是一個小優化(判斷相等O(n) < O(nlogn))
使用兩個map容器分別儲存兩個字串的值,遍歷兩個容器,如果兩個字元都是第一次插入,那麼返回值均為NULL
如果是同構,那麼返回的是上次插入相同值的位置,這個位置應該要一樣
這是一種很巧妙的方法,利用的map容器的特性:插入不存在的值,返回空,插入已存在的值,返回被覆蓋的那個VALUE值,這裡返回的就是數值位置
時間複雜度:O(nlogn)
空間複雜度:O(n)
class Solution { public boolean isIsomorphic(String s, String t) { if(s.length() != t.length()) return false; if(s.equals(t)) return true; Map index_s = new HashMap(); Map index_t = new HashMap(); for(Integer i = 0; i < s.length(); i++){ if(index_s.put(s.charAt(i), i) != index_t.put(t.charAt(i), i)) return false; } return true; } }