세고 1️⃣2️⃣3️⃣이라고 말하세요...

4206 단어 algorithmsjavascript
이 문제는 1과 30 사이의 숫자를 count and say 로 변환하는 프로그램을 작성하도록 요청합니다. 이것은 1부터 시작하여 연속적인 중복 정수의 개수와 숫자 자체인 다음 숫자를 찾아야 함을 의미합니다. 그래서 우리는 다음 숫자를 찾기 위해 마지막 숫자를 사용합니다. 좀 더 시각적으로 설명하겠습니다.
  • 1
  • 11
  • 21
  • 1211
  • 111221
  • 312211
  • 13112221
  • 1113213211
  • 31131211131221
  • 13211311123113112211

  • 4가 1211 이므로 5는 111221이므로 숫자로 다음을 수행합니다.
  • 1 -> 11(하나)
  • 2 -> 12(하나 둘) 지금까지: 1112
  • 11 -> 21(2개) 최종: 111221

  • 암호



    알고리즘을 살펴보면 다음과 같습니다.

    let countAndSay = (n) => {
    
        let result = '1'
    
        for(let i = 1; i < n ; i++){
    
            let consecutiveDigits = ''
            let substringResult = ''
    
            for(let j = 0; j < result.length; j++){
    
                consecutiveDigits += result[j]
    
                    if(result[j] !== result[j+1]){
    
                        substringResult += `${sameDigits.length}${sameDigits[0]}`
                        consecutiveDigits = ''
                    }
            }
            result = substringResult
        }
        return result
    };
    


    1부터 카운트를 문자열로 시작한 다음( let result = '1' ), 연속 숫자를 추적할 빈 문자열을 설정하고( let consecutiveDigits = '' ) 중복이 있으면 추가합니다( consecutiveDigits += result[j] ).

    다음 숫자가 다르면( if(result[j] !== result[j+1]) ) 현재 중복된 숫자를 계산하고( consecutiveDigits.length ) 현재 숫자를 추가합니다( consecutiveDigits[0] ).

    두 값 모두 내부 루프( substringResult )에서 부분 문자열로 추가되고 외부 루프에서 result로 설정됩니다.

    내부 루프 반복이 완료된 후 결과 변수를 수집한 하위 문자열로 설정합니다.

    외부 루프는 count and say로 변환할 원하는 숫자에 도달할 때까지 계속되고 이전 숫자를 저장합니다. 내부 루프가 진행되는 동안 이전count and say 번호를 분석하여 다음 번호를 생성합니다.

    또는 에 오신 것을 환영합니다!

    좋은 웹페이지 즐겨찾기