題目概述:
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。