题目描述:
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.
Example 1:
Input: s ="egg",
t ="add"
Output: true
Example 2:
Input: s ="foo",
t ="bar"
Output: false
中文理解:给出两个字符串,得出两个字符串是不是同构的字符串,同构字符串的含义就是相同字母在两个字符串中出现的问题是一致的,比如add中相同字符串位置是2,3,egg中相同字符串出现位置也是2,3,故add和egg是同构字符串。
解题思路:使用两个长度都为256的数组记录相同下标的字符串的下标是否相同,若不同则返回false。
代码(java):
class Solution {
public boolean isIsomorphic(String s, String t) {
int []indexOfs=new int[256];
int []indexOft=new int[256];
for(int i=0;i<s.length();i++){
char sc=s.charAt(i);
char tc=t.charAt(i);
if(indexOfs[sc]!=indexOft[tc]){
return false;
}
indexOfs[sc]=i+1;
indexOft[tc]=i+1;
}
return true;
}
}