• 205. Isomorphic Strings


    Given two strings s and t, determine if they are isomorphic.

    Two strings are isomorphic if the characters in s can be replaced to get t.

    All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character but a character may map to itself.

    For example,
    Given "egg""add", return true.

    Given "foo""bar", return false.

    Given "paper""title", return true.

    Note:
    You may assume both s and t have the same length.

    本题有两种方法,第一种是创建两个整型数组,然后分别遍历这两个字符串,出现过的字符,将其值变成i+1,判断两个数组值是否相等,如果不相等,则返回false。注意种方法的原理是专门针对重复元素的,对于重复元素,看其之前的值是否一样,如果不一样,则返回false;否则返回true;代码如下:

     1 public class Solution {
     2     public boolean isIsomorphic(String s, String t) {
     3         int[] num1 = new int[256];
     4         int[] num2 = new int[256];
     5         for(int i=0;i<s.length();i++){
     6             if(num1[s.charAt(i)]!=num2[t.charAt(i)]) return false;
     7             num1[s.charAt(i)] = i+1;
     8             num2[t.charAt(i)] = i+1;
     9         }
    10         return true;
    11     }
    12 }

    第二种解法是使用hashmap来做,hashmap里面存储的是字符对,首先遍历两个字符串,对于出现的位置i,如果map的key包括它,则比较它的值和t所对应的i的位置的值是否一样,如果一样,就是对的,否则返回false;如果不包含,则看是否包含value值,如果包含,则返回false;代码如下:

     1 public class Solution {
     2     public boolean isIsomorphic(String s, String t) {
     3         Map<Character,Character> map = new HashMap<Character,Character>();
     4         for(int i=0;i<s.length();i++){
     5             if(map.containsKey(s.charAt(i))){
     6                 if(map.get(s.charAt(i))!=t.charAt(i)){
     7                     return false;
     8                 }
     9             }else{
    10                 if(!map.containsValue(t.charAt(i)))
    11                     map.put(s.charAt(i),t.charAt(i));
    12                 else return false;
    13             }
    14         }
    15         return true;
    16     }
    17 }
  • 相关阅读:
    TSQL Challenge 1
    CTE的使用
    编号问题
    C语言结构体(sizeof长度)偏移量的简单研究
    【更新中】树的遍历
    【更新中】C语言语法汇总(仅记录遇到的坑)
    windows修改PowerShell(命令提示符)默认中文编码方式
    “人工智能”并不可怕
    学习《操作系统》收获
    人类大脑只开发了10%? I don't think so.
  • 原文地址:https://www.cnblogs.com/codeskiller/p/6597791.html
Copyright © 2020-2023  润新知