傳送門code
若是一個十進制數字不含任何前導零,且每一位上的數字不是 0 就是 1 ,那麼該數字就是一個 十-二進制數 。例如,101 和 1100 都是 十-二進制數,而 112 和 3001 不是。
給你一個表示十進制整數的字符串 n ,返回和爲 n 的 十-二進制數 的最少數目。ci
示例 1:leetcode
輸入:n = "32"
輸出:3
解釋:10 + 11 + 11 = 32字符串
示例 2:get
輸入:n = "82734"
輸出:8it
示例 3:io
輸入:n = "27346209830709182346"
輸出:9模板
提示:class
1 <= n.length <= 105 n 僅由數字組成 n 不含任何前導零並老是表示正整數
來源:力扣(LeetCode)循環
int minPartitions(char * n){ }
其實這題能夠理解爲求取輸入的字符串裏最大的數是多少,最大不過就是9,因此能夠創建遍歷向後的循環
咱們能夠經過判斷循環內的元素是否還有來決定是否終止循環遍歷,每次遍歷獲得須要將字符轉化爲數字就是n[i]-'0';
若是提早檢測到了9就能夠直接跳出了,覺得不會有比9更大的了,省去無用的功夫。
int minPartitions(char * n){ int times=0; for(int i=0;n[i]!='\0';i++) { times=fmax(times,n[i]-'0'); if(times==9)return times; } return times; }