2013-08-08 2 views
0

나는 다음 연습을 받았지만 제대로 작동하지 않는 것 같습니다. 내가 무슨 짓을했는지첫 번째 발생을 제외하고 문자열에서 중복을 제거하는 방법

//Remove duplicate characters in a 
// given string keeping only the first occurrences. 
// For example, if the input is ‘tree traversal’ 
// the output will be "tre avsl". 
// --------------------- 
var params = 'tree traversal word'; 

var removeDuplicates = function (string) { 
    return string; 
}; 

// This function runs the application 
// --------------------- 
var run = function() { 
    // We execute the function returned here, 
    // passing params as arguments 
    return removeDuplicates; 
}; 

은 -

var removeDuplicates = function (string) { 

    var word =''; 
    for(var i=0; i < string.length; i++){ 
     if(string[i] == " "){ 
      word += string[i] + " "; 
     } 
     else if(string.lastIndexOf(string[i]) == string.indexOf(string[i])) 
     { 
     word += string[i]; 
     } 
    } 

    return word; 
}; 

나는 완전히 대체를 사용할 수 없습니다 그리고 난이 루프 내부를 만들 때 작동하지 않습니다.

+0

내부 루프 코드를 보여주십시오. –

답변

0
<script> 

    function removeDuplicates(string) 
    { 
     var result = []; 

     var i = null; 
     var length = string.length; 
     for (i = 0; i < length; i += 1) 
     { 
      var current = string.charAt(i); 

      if (result.indexOf(current) === -1) 
      { 
       result.push(current); 
      } 

     } 

     return result.join(""); 
    } 

    function removeDuplicatesRegex(string) 
    { 
     return string.replace(/(.)(?=\1)/g, ""); 
    } 
    var str = "tree traversal"; 
    alert(removeDuplicates(str)); 
</script> 
+0

답변입니다. 고맙습니다. – chickenbeef

+0

@ user1645888 정답으로 사용하십시오. 감사. –

0

우선 실행 함수는 removeDuplicates(params)을 반환해야합니다. 맞습니까?

오른쪽 라인에있어, 그러나 다시이 조건에 대해 생각해야합니다

else if(string.lastIndexOf(string[i]) == string.indexOf(string[i]))

i = 0

와 예로서 'tree traversal word'을 복용 lastIndexOf()는 5 (인덱스를 반환 할 것입니다 indexOf()는 0을 반환하는 반면, indexOf()는 0을 반환합니다.

't'가 아직 word에 추가되지 않았으므로 분명히 원하는 것은 아닙니다 (단, 당신의 상태가 실제로 시험하는 것입니다).

점차적으로 word을 작성하고 있으므로 string[i] 문자가 word에 이미 있는지 테스트하여 for 루프를 반복 할 때마다 고려해야합니다. 그렇지 않으면 추가하십시오.

은 (아마도이 ​​편리합니다 http://www.w3schools.com/jsref/jsref_search.asp를)

행운을 빕니다!

관련 문제