[LeetCode] Isomorphic Strings
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.
생각:
1. hash table 사용 하기;
2. s 의 문자 와 t 의 문 자 를 매 핑 관 계 를 만 듭 니 다. 문자 가 나타 나 는 순서에 따라 매 핑 을 만 들 고 한 문 자 는 한 글자 만 매 핑 할 수 있 습 니 다.그러므로 매 핑 관계 에서 키 와 값 은 모두 유일한 것 이다.
3. 예 를 들 어 foo, bar 에서 f - b, o - a, o - r, 같은 o 맵 두 글자 이기 때문에 조건 에 부합 되 지 않 습 니 다.
자바 와 C++ 구현:
public class Solution {
public boolean isIsomorphic(String s, String t) {
Map<String, String> myMap = new HashMap<String, String>();
for(int i = 0; i < s.length(); i ++){
String tmps = s.substring(i, i+1) ;
String tmpt = myMap.get(tmps) ;
if(tmpt != null){
if(!tmpt.equals(t.substring(i, i+1))) return false ;
}else{
if(myMap.containsValue(t.substring(i, i+1))) return false ;
myMap.put(s.substring(i, i+1), t.substring(i, i+1)) ;
}
}
return true ;
}
}
class Solution {
public:
bool isIsomorphic(string s, string t) {
if(s == "" && t == "") return true ;
map<char, char> mymap ;
for(int i = 0; i < s.size(); i ++){
if(mymap.find(s[i]) != mymap.end()){
if(mymap[s[i]] != t[i]) return false ;
}else{
map<char, char>::iterator p ;
for(p = mymap.begin(); p != mymap.end(); p ++){
if(p->second == t[i]) return false ;
}
mymap[s[i]] = t[i];
}
}
}
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.