是否同构

来源:互联网 发布:js 设置radio checked 编辑:程序博客网 时间:2024/06/08 14:58
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.
 注意事项
You may assume both s and t have the same length.
样例
Given s = "egg", t = "add", return true.
Given s = "foo", t = "bar", return false.

Given s = "paper", t = "title", return true.


import java.util.HashMap;import java.util.HashSet;import java.util.Map;import java.util.Scanner;import java.util.Set;/** * 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. 注意事项You may assume both s and t have the same length.样例Given s = "egg", t = "add", return true.Given s = "foo", t = "bar", return false.Given s = "paper", t = "title", return true. *  * @author Dell * */public class Test638 {  public static boolean isIsomorphic(String s, String t)  {   if(s.equals("")&&t.equals(""))    return true;      /*LinkedHashMap<Character,Integer> map1=new LinkedHashMap<>();  LinkedHashMap<Character,Integer> map2=new LinkedHashMap<>();    for(int i=0;i<s.length();i++)  {   if(!map1.containsKey(s.charAt(i)))   {   map1.put(s.charAt(i), 1);   }   else   {    map1.put(s.charAt(i), map1.get(s.charAt(i))+1);     }  }  for(int i=0;i<t.length();i++)  {   if(!map2.containsKey(t.charAt(i)))   {   map2.put(t.charAt(i), 1);   }   else   {    map2.put(t.charAt(i), map2.get(t.charAt(i))+1);     }  }*/   boolean result=true;  int[] map1=new int[256];  int[] map2=new int[256];  for(int i=0;i<s.length();i++)  {     map1[s.charAt(i)]++;    }  for(int i=0;i<s.length();i++)  {     map2[t.charAt(i)]++;    }  for(int i=0;i<s.length();i++)  {  if(map1[s.charAt(i)]!=map2[t.charAt(i)])  {  result=false;  break;  }    }  return result;  }  public static boolean isIsomorphic1(String s, String t)  {  if(s==null||t==null) return false;  if(s.length()!=t.length()) return false;  Map<Character,Character> map=new HashMap<>();  Set<Character> set=new HashSet<>();  for(int i=0;i<s.length();i++)  {  char c1=s.charAt(i);  char c2=t.charAt(i);  if(map.containsKey(c1))  {  if(map.get(c1)!=c2) return false;  }  else  {  if(set.contains(c2)) return false;  else  {  map.put(c1, c2);   set.add(c2);  }  }     }  return true;    }public static void main(String[] args) { Scanner sc=new Scanner(System.in);      String s=sc.nextLine();      String t=sc.nextLine(); System.out.println(isIsomorphic(s,t));}}