2014-05-19 2 views
1

멍청한 놈입니다.이 질문이 절망적으로 바보가되지 않기를 바랍니다.Coderbyte의 Lettercountr (str)에 대한 해석 해석

는 Coderbyte에 자바 스크립트 문제를 통해 내 방식을 일하고있다, 그리고 희망 lettercount 운동 아래에 붙어되었습니다

http://www.coderbyte.com/CodingArea/GuestEditor.php?ct=Letter%20Count%20I&lan=JavaScript

찾았 (작동) 솔루션을 온라인으로 다음

function LetterCountI(str){ 

    var x=str.split(" ") 
    var count=0; 
    for(var i=0; i<x.length; i++)//getting the word 
    var word=x[i] 
    for(var j=0; j<word.length; j++)//getting the letter 
     var letter=word[j] 
     for(var k=0; k<word.length; k++)//comparing word 
     if(j !== k) { /* verify that the letter being pased is not literally the same as in the higher for loop */ 
      if(letter===word[k]){ 
      count=count+1; 
       if(count>1){ 
       return word; 
      } 
     } 
    } 
    return -1; 
} 

나는 그 마지막 "return -1"까지 모든 것을 명확하게했습니다. 왜 그것이 필요한지 이해하지만 그것이 배치되는 방식이 어색하게 보입니다. 어떻게 든 if 체인에서 "else"대안으로 포함되어서는 안됩니까? 지금까지는 프로그램을 망가뜨 렸지만 지금까지는 통합에있어 아무런 시도도하지 않았습니다.

이 프로그램이 기본적으로 if 체인을 먼저 실행하려고 시도하고 있는데, 조건이 충족되지 않는 경우에는 -1을 반환하는 "default"로 이동합니까?

누구나 통찰력을 가지고 있다면 미리 감사드립니다.

답변

0

iffor 안에 있기 때문에 if에 넣을 수 없습니다. 이것은 이런 종류의 알고리즘을 구성하는 꽤 일반적인 방법입니다. 그것은 기본적으로 for 루프를 통해 실행하여 결과를 찾지 만, 발견되지 않으면 기본값을 반환합니다.

function LetterCountI(str){ 

    var x = str.split(" "); 
    var count = 0; 
    var res = -1; 
    for(var i=0; i<x.length; i++) {//getting the word 
    var word=x[i]; 
    for(var j=0; j<word.length; j++) {//getting the letter 
     var letter=word[j]; 
     for(var k=0; k<word.length; k++) {//comparing word 
     if(j !== k) { /* verify that the letter being passed is not literally the same as in the higher for loop */ 
      if(letter === word[k] && res === -1) { 
       count=count+1; 
       if(count>1){ 
       res = word; 
       } 
      } 
     } 
     } 
    } 
    } 
    return res; 
} 
+0

감사 neelsg 그게 명확히하는 데 도움이 : 하나의 return 문 (약간 덜 효율적인)이 될 수있다 그래야 또 다른 방법은 그것을 구조화하기! – GSmokes