给出一个非负整数 num,反复的将所有位上的数字相加,直到得到一个一位的整数。
样例
给出 num = 38。
相加的过程如下:3 + 8 = 11,1 + 1 = 2。因为 2 只剩下一个数字,所以返回 2。
代码如下
public class Solution {
/**
* @param num a non-negative integer
* @return one digit
*/
public int addDigits(int num) {
String numStr = Integer.toString(num);
while(numStr.length() > 1) {
int sum = 0;
for(int i = 0; i < numStr.length(); i++) {
sum = sum + Character.getNumericValue(numStr.charAt(i));
}
numStr = Integer.toString(sum);
}
return Integer.parseInt(numStr);
}
}
这里java.lang.Character.getNumericValue(char ch) 返回指定的Unicode字符表示的int值。例如,字符’ u216C’(罗马数字50)将返回一个int 值50。