[LeetCode] 205 동형 문자열

패리티 문자열입니다. 서로 두 문자열 s와 t는, 그들이 문자열을 비트 여부를 판정한다. , t "g"의 위치에 문자에 대응하는 (S)에 문자 "E"를 갖도록 후 모두의 나머지 전자 t는 문자 g에 해당하는 위치에 해당한다 같이 비트 열은 정의된다. 다음 예는

예 1 :

입력 : S = "egg", t ="add" 
출력 : 사실

예 2 :

입력 : S = "foo", t ="bar" 
출력 : 거짓

예 3 :

입력 : S = "paper", t ="title" 
출력 : 사실

두 아이디어. 해시 MAP은 한 종류의 계산의 생각을하는 것입니다, 이루어집니다.

두 문자열 이송, 해시 맵 문자 s 및 t에 의해 저장된 대응 관계는 동일한 위치이다. 당신이이없는 것을 발견한다면, 우리는 false를 반환; 횡단은, 다음 true를 반환.

시간 O (N)

공간 O (N)

1  / * *
 2  * @param {S} 문자열
 3  * @param {} 문자열 t
 4  * @ 반환} {부울
 5   * / 
6  VAR isIsomorphic = 함수 (S, t) {
 7      경우 (s.length! == t.length) {
 8          반환  거짓 ;
9      }
 (10)      의 경우 (S ===의 t) {
 11          반환  ;
12      }
 13      CONST OBJ1 = {};
14      CONST obj2보다 = {};
(15)      에 대한(내가가 s.length를 <; I = 0하자 난 ++ ) {
 16          CONST 문자의 = S [I];
17          CONST tLetter = t의 [I]을;
18          의 경우 (! obj2보다 [tLetter]) {
 19              obj2보다 [tLetter = 문자;
(20)          }
 (21)          의 경우 (! OBJ1 [편지]) {
 22              OBJ1 [편지] = tLetter;
23          }
 24          의 경우 (OBJ1 [편지] == tLetter obj2보다 || [tLetter] ==! 문자) {
 25              반환  거짓 ;
26          }
 27      }
 28     반환  사실 ;
29 };

 

또한 문자열을 통과 같은 종류의 계산의 아이디어를 해시 맵. 위의 예 (1) 좋은 예제를 사용하여. 문자 [ "E"= "A"를 기록하기 때문에 문자 E 및 문자 간의 대응을 참고 때 첫 문자 E S가 발생하면. 당신이이없는 것을 발견하면, 이송이 끝날 때까지, false를 돌려줍니다.

시간 O (N)

공간 O (1)

1  / * *
 2  * @param {S} 문자열
 3  * @param {} 문자열 t
 4  * @ 반환} {부울
 5   * / 
6  VAR isIsomorphic = 함수 (S, t) {
 도 7      의 경우 (S ===의 t) {
 8          반환  사실 ;
9      }
 10      VAR LEN = s.length;
11      VAR의 I = 1 ;
12      의 경우 (LEN ==! t.length) {
 13          반환  거짓 ;
14      }
 15      반면(내가 < LEN)를 {
 16 일          경우 (s.indexOf (S [I]) === t.indexOf (t [I])) {
 17              I ++ ;
18          } 다른 {
 19              휴식 ;
20          }
 21      }
 22      리턴 I === 렌;
23 };

 

추천

출처www.cnblogs.com/aaronliu1991/p/11762616.html