BlenderYjiraaの日記

iOS(Swift,Xcode), 3D(Blender), Android(Kotlin,Java)で学んだことを書いていきますー

アルゴリズムテスト[模擬]受けてみた

[問題文]

Find longest sequence of zeros in binary representation of an integer.

 

[考えたアルゴリズム]

  1. 配列A,B,Cを用意する
  2. 与えられた数値Nを二進数に変換する
  3. 変換した数値を文字として扱い、1文字ずつ区切り配列Aに追加する
  4. For Loop(文字列"0"と"1"で条件分岐)
  5. "0"の場合、配列Bに"0"を追加する
  6. "1"の場合、配列Bと配列Cの要素数を比較して、Bが多ければCを上書き
  7. 配列Bを空にする
  8. 配列Cの要素数を返す

 

[書いたコード]

public func solution(_ N : Int) -> Int {

    

    //property

    var charArray = [String]()

    var finalCounter = [String]()

    var prepareCounter = [String]()

    

    // To 2 digits(of type String)

    var binaryNumStr = String(N, radix: 2)

    

    //Split chars and put them into the array

    charArray = binaryNumStr.characters.map { String($0) }

    

    //Loop

    for charNum in 0..<charArray.count {

        

        

        if charArray[charNum] == "0" {

            prepareCounter.append("0")

        } else {

            

            let preNum = prepareCounter.count

            let finalNum = finalCounter.count

            

            //comparison

            if preNum > finalNum {

                finalCounter = prepareCounter

            }

            

            //empty preArray

            prepareCounter = []

            

        }

        

        

    }

    

    return finalCounter.count    

}

 

[結果]

一応100点もらえました。もっと勉強しようと思います。