デジタルビット数の追加(12/16 THU)


swiftを学んですでに3ヶ月になって、今まで基本的な文法さえうまく运用できない骨の中で、文顺...🤦‍♀️
これから、毎週2つの鼻輪を解くのが目標です!!💪🔥
以前、公費学院に通っていた時も数位加算を習っていましたが、その時は数位が変わると対応できない形を学んでいました.解が终わった后に他の人の解を见て、世界の解はどんなに多様で、练习珂太を坚持するならばとても大きい助けがあります!!
[今日の質問]

自然数Nが与えられた場合、Nの各ビット数の和を求め、返される解関数を生成します.
方法10の余数の和を除く
func solution(_ n: Int) -> Int {
   // 정답이 쌓일 변수 생성
   var answer = 0
   // n의 값을 저장할 변수 생성
   var number = n
   
   while number > 0 {
   	answer += number % 10
       number / 10
   }
   return answer
}
方法Int->String->Intに変換して1桁加算
func solution(_ n: Int) -> Int {
    // 정답이 쌓일 변수 생성
    var answer = 0
    // n의 값을 String으로 받기
    let stringN = String(n)
    
    for i in stringN {
    	answer += Int(String(i)) ?? 0
    }
    return answer
}
方法reduce関数の使用
func solution(_ n: Int) -> Int {
   // n(Int)을 String으로 변환
   let stringN = String(n)
   
   let answer = stringN.reduce(0, {$0 + (Int(String($1)))!})
   
   return answer

  • reduce:指定したモジュールを使用してアレイ要素をマージした結果を返します.
    基本形状:func reduce(initialResult:Result,NextPartialResult:(Result,Element)throws->Result)rethrows->Result
    パラメータ:initialResult,nextPartialResult(上のコードではinitialResult=0,nextPartialResult={$0+(String($1)!))
    InitialResult:初期累積値として使用する値.モジュールを最初に実行するとnextPartialResultに転送されます.
  • 方法map関数の使用
    func solution(_ n: Int) {
      // 정답이 쌓일 변수 생성
      let answer = 0
      // 문자배열 n을 다시 정수 배열로 변환
      let array = String(n).map{ Int(String($0)) ?? 0 }
      
      for i in array {
      	answer += i
      }
      return answer
    }  
  • map:指定したモジュールマッピング結果を含むアレイを返します.
  • 1つの問題を解くのにこんなに多くの解法があるなんて...私は再びコテの練習を続けると誓った.🙏