zoukankan      html  css  js  c++  java
  • leetcode刷题笔记 二百零五题 同构字符串

    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
        }
    }
    
  • 相关阅读:
    iPad 3g版完美实现打电话功能(phoneitipad破解)
    vb.NET基础总结
    PMP考试的过与只是
    Oracle基础学习5-- Oracle权限之”角色”
    linux内存操作----kernel 3.5.X copy_from_user()和copy_to_user()
    猜数字游戏
    pthread_t definition
    POJ 2057 The Lost House
    简单截图功能实现
    java实现罗马数字转十进制
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/13717374.html
Copyright © 2011-2022 走看看