leetcode刷題筆記 二百零五題 同構字串
阿新 • • 發佈:2020-09-23
leetcode刷題筆記 二百零五題 同構字串
源地址:205. 同構字串
問題描述:
給定兩個字串 s 和 t,判斷它們是否是同構的。
如果 s 中的字元可以被替換得到 t ,那麼這兩個字串是同構的。
所有出現的字元都必須用另一個字元替換,同時保留字元的順序。兩個字元不能對映到同一個字元上,但字元可以對映自己本身。
示例 1:
輸入: s = "egg", t = "add"
輸出: true
示例 2:輸入: s = "foo", t = "bar"
輸出: false
示例 3:輸入: s = "paper", t = "title"
輸出: true
說明:
你可以假設 s 和 t 具有相同的長度。
//由於s和t同構,故對應位置的字元位置一致,使用map記錄當前字元的位置 //若此時對應字元位置不相同,則返回false import scala.collection.mutable object Solution { def isIsomorphic(s: String, t: String): Boolean = { val length = s.length var mapS = new mutable.HashMap[Char, Int]() var mapT = new mutable.HashMap[Char, Int]() for(i <- 0 to length-1){ val charS = s.charAt(i) val charT = t.charAt(i) //當前字元已經插入map, 比較其位次是否一致 if(mapS.contains(charS) && mapT.contains(charT)){ //位次不相等,返回false if (mapS(charS) != mapT(charT)) return false //相同,更新之前位次 mapS(charS) = i mapT(charT) = i } else{ //兩個對映僅存在一個,則返回false if (mapS.contains(charS) || mapT.contains(charT)) return false //若都不存在,即更新map mapS = mapS.+((charS, i)) mapT = mapT.+((charT, i)) } } return true } }