アルゴリズムテスト[模擬]受けてみた
[問題文]
Find longest sequence of zeros in binary representation of an integer.
[考えたアルゴリズム]
- 配列A,B,Cを用意する
- 与えられた数値Nを二進数に変換する
- 変換した数値を文字として扱い、1文字ずつ区切り配列Aに追加する
- For Loop(文字列"0"と"1"で条件分岐)
- "0"の場合、配列Bに"0"を追加する
- "1"の場合、配列Bと配列Cの要素数を比較して、Bが多ければCを上書き
- 配列Bを空にする
- 配列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点もらえました。もっと勉強しようと思います。