zoukankan      html  css  js  c++  java
  • 简单-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 具有相同的长度。

    错误思维:两个散列表记录各自字符出现次数并比较。只保证两者每个字符的出现次数,没有保证出现顺序。

    class Solution {
        public boolean isIsomorphic(String s, String t) {
            Map<Character,Integer> map1 = new LinkedHashMap<>();
            Map<Character,Integer> map2 = new LinkedHashMap<>();
            for(int i=0; i<s.length(); i++)
                map1.put(s.charAt(i),map1.getOrDefault(s.charAt(i),0)+1);
            for(int i=0; i<t.length(); i++)
                map2.put(t.charAt(i),map2.getOrDefault(t.charAt(i),0)+1);
            Iterator i1 = map1.values().iterator();
            Iterator i2 = map2.values().iterator();
            while(i1.hasNext()){
                if(i1.next()!=i2.next())
                    return false;
            }
            return true;
        }
    }

    方法一:同构需要同时保证s映射到t和t映射到s。

  • 相关阅读:
    CSS选择符详解之关系选择符篇
    linux基础命令入门
    asp.net 大数据导出execl实现分开压缩并下载
    一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?
    Git学习笔记
    ssalesforce IoT
    根据生日自动计算年龄
    Salesforce简单练习案例
    JavaScript对象
    JavaScript函数
  • 原文地址:https://www.cnblogs.com/faded828x/p/13124743.html
Copyright © 2011-2022 走看看