首页 > 代码库 > LeetCode 205 Isomorphic Strings

LeetCode 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.

 

思路:

这道题要在两个字符串的字符之间建立一对一的映射,不允许一对多和多对一映射的出现。因此,可以建立一个关联两个字符串字符的map,检查是否现有键的对应值于当前值冲突,并设立一个set,检查未被存入map的键其对应值是否已经在set中出现,在二者均不出现的情况下返回true。

 

解法:

 1 import java.util.Map; 2 import java.util.Set; 3  4 public class Solution 5 { 6     public boolean isIsomorphic(String s, String t) 7     { 8         if(s == null || t == null) 9             return false;10         if(s.length() != t.length())11             return false;12 13         Map<Character, Character> map = new HashMap<>();14         Set<Character> set = new HashSet<>();15 16         char[] sArray = s.toCharArray();17         char[] tArray = t.toCharArray();18 19         for(int i = 0; i < s.length(); i++)20         {21             if(map.containsKey(sArray[i]))22             {23                 if(map.get(sArray[i]) != tArray[i])24                     return false;25             }26             else27             {28                 if(set.contains(tArray[i]))29                     return false;30                 else31                 {32                     map.put(sArray[i], tArray[i]);33                     set.add(tArray[i]);34                 }35             }36         }37 38         return true;39     }40 }

 

LeetCode 205 Isomorphic Strings