Leetcode205 동형 문자열

1. 질문의 의미를 이해 :

두 문자열을 주어진, 그래서 그들은 동형 있는지 여부를 확인 (동형). 

동형 : 문자열 S의 문자가 문자열 t을 얻기 위해 대체 할 수있는 경우 두 개의 문자열은 동형이다.

2. 문제 해결 키워드 : 해시 맵

   1) 먼저, 순서대로 문자열 문자열 S 및 t는 각각 숯불에 매핑된다 별도로 기록되는 대응 t에서의 S의 문자, 문자 값에 대응하는 키 해시 맵을 구축한다.

     예를 들어, "종이"와 "제목"을 위해 :

   키 |

     P - 값이 맵에 존재하는 것처럼, 만약 그렇다면, false를 돌려 t를하면 키가 맵에 존재하지 않는> t p를 확인; 하지 않을 경우, 값으로 키와 t으로 페이지를 추가합니다.

     A - 키가 맵에 존재하지 않는 값이 맵에 존재하는 것처럼 내가, 경우에하는 것은 예, false를 반환하는 경우> 나는 확인; 하지 않을 경우, 나는 값 키로 페이지를 추가합니다.

     p는 -> 키로 t p를 이미 맵에 존재했다. 해당 값이 t에 해당하는 경우 예, 건너 뛰면하지 않을 경우 false를 반환, 확인합니다.

     전자 -> 키를 값으로 난 맵에 존재하는 경우 예, false를 반환하는 경우, 확인,지도에 존재하지 않는 리터 전자; 하지 않으면 것은 값으로 키와 L로 전자를 추가합니다.

     R -> 키를 값으로 전자지도에 존재하는 경우 예, FALS을 반환하는 경우, 확인,지도에 존재하지 않는 전자 R; 하지 않으면 것은 값으로 키와 전자로 R을 추가합니다.

    끝난.

3. 참고 : 몇 번 더 연습 할 수 있습니다. .

4. 자바代  클래스 솔루션 {

공공  부울 isIsomorphic (S 문자열, 문자열 T) { 
        지도 <문자, 문자> = charStoCharT 새로운 새로운 해시 맵 '<> ();
         INT sLength = s.length ();
         INT tlength = t.length (); 
       
         // 기본 케이스 : 만약 근본적으로 다른 두 개의 길이 스트링,
          // 동등 할 필요가없는, 콘트라스트의 염기성 조건시의 길이의 두 개의 동일한 문자열. 
        IF (! sLength = tlength) {
            반환  false로는 ; 
        } 

        에 대해 ( int로 , 나는 <sLength, I = 0 나는 ++가 ) {
             숯불 Froms = s.charAt (I),
             문자= fromt ; t.charAt (I)
             IF (! {charStoCharT.containsKey (Froms))
                // 수있다 1 : 숯은 S 맵 아닌 경우, 제는 이미 문자 대응 여부를 결정 내지 t 
                // 에서 내부지도. 당신이 이미있는 경우 직접 false를 돌려줍니다. 그렇지 않은 경우, 새로운 맵을 작성합니다. 
               
               IF (charStoCharT.containsValue는 () fromt) {
                   반환  false로 ; 
               } 다른 사람이 { 
                  (fromt, Froms) charStoCharT.put가; 
               } 
             } 다른 { 
// 가능한 2 : 맵 이미 s의 문자는, 그 시간에 해당한다 값은 현재 t에서 현재를 볼 수행, 그렇다면, 건너 뛰기, 그렇지 않은 경우 false를 반환합니다.되지 않은 경우 (charStoCharT.get은 (Froms)! = T에서) 반환 거짓에 , 다른 { 계속 ; } } 반환 true로를 ; // true가 돌려로 부드럽게 마무리 }

 

추천

출처www.cnblogs.com/jazhuang9417/p/11249449.html