天天看點

[LeetCode] Add Digits - 數字各個位數求和

題目概述:

given a non-negative integer num, repeatedly add all its digits until the result has only one digit.

for example:

given num = 38, the process is like: 3 + 8 = 11, 1 + 1 = 2. since 2 has only one digit, return it.

follow up:

could you do it without any loop/recursion in o(1) runtime?

題目解析:

主要考察整數各個位數求和,當且僅當和小于10時輸出。可能會走入整數轉換為字元串的誤區,直接使用取餘(%)個位數相加即可,需要注意:

        1.非負整數判斷

        2.輸入0時輸出0,輸入10時輸出1

        3.至于o(1)時間複雜度考察數學公式:1 + (num-1) % 9

        4.整數轉換字元串可以類似思想:循環個位數轉換reslut=num%10,num=num/10

我的代碼:

推薦代碼:

題目筆記:

roman to integer 羅馬數字轉換考察switch和數字各個位數轉換

ps:我代碼的缺點包括:我喜歡過于複雜的注釋,而直覺的代碼好于注釋;代碼中的臨時變量轉換過多,需要更精簡;字元串數組操作習慣計算長度後s[i],而不是使用*s。