패리티 문자열입니다. 서로 두 문자열 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 };