2016-08-04 4 views
0

두 문자열이 있다고 가정 해 보겠습니다. a & b.indexOf를 사용하지 않고 다른 문자열의 문자열을 일치시키는 방법은 무엇입니까?

var a = '[email protected]'; 
var b = 'yahoo12345556'; 

내가 기대하고하는 것은 결과가 yahoo 될하지만 a.indexOf(b)을 사용하여 나에게 -1을 줄 것입니다. 내가 byahoo에 변경하는 경우

&이 a.indexOf(b)을, 그것은 분명 나에게 -1을주지 못할 것이다.

대신 루프에서 문자를 일치시켜야합니까? 그러나 두 줄은 길이가 같지 않습니다. 캐릭터가 연속적으로 있어야한다는 점도 중요합니다. 캐릭터의 발생을 기대하지 않습니다.

+0

그래서 두 변수 사이에 공통된 부분 문자열을 찾으십니까? –

+0

일치 기준은 무엇입니까? 양쪽에서 가장 긴 부분 일치 문자열? – juvian

+0

원래 문자열에서 검색 한 문자열의 위치와 관계없이 정확히 일치합니다. – thedeliciousmuffin

답변

1

당신은이 문제를 해결하기 위해 재귀를 사용할 수 있습니다 : 당신이 최대로 시작하는 편지의 모든 조합을 통해 갈 수있을 것입니다 findLongestCommon (A, B, a.length)를 호출하여

function findLongestCommon (a, b, len) { 
    for (var i = 0; i < a.length-1; i=i+len) { 
     var sub = a.substring(i, len) 
     if (len == 0){ 
      return ""; 
     } 
     else if (sub.indexOf(b) != -1) { 
      return a; 
     } 
     else{ 
      return findLongestCommon(a, b, len-1); 
     } 
} 

을 (전체 문자열)을 가장 작은 문자 (하나의 문자)로 바꾸고 문자가 없으면 빈 문자열을 반환합니다.

+0

질문 제목에서 : "* indexOf *를 사용하지 않고". – hatchet

+0

@hatchet 사용자가 "indexOf를 사용하지 않고"대신 "indexOf를 시도했지만 더 좋은 아이디어가 없다"고 생각한다고 생각하지 않습니다. 목표를 달성하는 가장 쉽고 빠른 방법은 재귀 및 indexOf를 사용하는 것입니다. 당신은 더 나은 대답이 있다면 게시하십시오. –

관련 문제