//方法一: //遍历每一个数,将每个数转换成字符串,判断字符串中含有'1'字符的个数; class Solution { public: int Count(string s){//写一个计算字符串中'1'的个数 int num=0; for(auto &e:s){ if(e=='1') num++; } return num; } int NumberOf1Between1AndN_Solution(int n) { int ret=0; for(int i=1;i<=n;i++){ ret+=Count(to_string(i));//将整数转换成字符串的函数 } return ret; //方法二: //遍历每个数,将每个数/10判断个位为1,在循环%10直到数为0; /* if(n<=0) return 0; int ret=0; for(int i=1;i<=n;i++){//遍历每个数 int temp=i; while(temp){//循环拆分判断个位是否有1,直到数为0; if(temp%10==1) ret++; temp/=10; } } return ret; */ } };