第一反应是用Map建立哈希映射来比对对应关系,知道看到大佬的题解
根据题意,字符串中相同的字符必然对应同一个映射
时间O(n)(这里的n其实并不准确,因为indexOf内部是使用的暴力的方法去查找),空间O(1)
1 public boolean isIsomorphic(String s, String t) { 2 for(int i=0;i<s.length();i++){ 3 // 按题意,相同的字符必然有相同的映射 4 if(s.indexOf(s.charAt(i))!=t.indexOf(t.charAt(i))){ 5 return false; 6 } 7 } 8 return true; 9 }
另外提一嘴,indexOf内部为什么没有用KMP等高效匹配算法
http://stackoverflow.com/questions/19543547/why-jdks-string-indexof-does-not-use-kmp/
大概意思就是JDK的大佬们认为大部分情况下indexOf所处理的字符都不长,使用KMP的话首先计算next数组
的消耗都够查找一次的了,因此没有使用KMP