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。

  • 相关阅读:
    HDU 1513 最长子序列
    HDU 3033 分组背包变形(每种至少一个)
    HDU 1712 分组背包
    深度学习
    《将博客搬至CSDN》
    UVa 10917 Dijkstra
    hdu 3839 Ancient Messages (dfs )
    LA 4255 UVa1423 拓扑排序
    poj 2515 差分序列,排列组合
    UVA 10054 the necklace 欧拉回路
  • 原文地址:https://www.cnblogs.com/faded828x/p/13124743.html
Copyright © 2011-2022 走看看