整数中1出现的次数(从1到n整数中1出现的次数)

输入一个整数 n ,求 1~n 这 n 个整数的十进制表示中 1 出现的次数
例如, 1~13 中包含 1 的数字有 1 、 10 、 11 、 12 、 13 因此共出现 6 次

输入
13
输出
6


public class Solution {
    public int NumberOf1Between1AndN_Solution(int n) {
        int count=0;
        StringBuffer s=new StringBuffer();
        for(int i=1;i<n+1;i++){
             s.append(i);
        }
        String str=s.toString();
        for(int i=0;i<str.length();i++){
            if(str.charAt(i)=='1')
                count++;
        }
        return count;
    }
}
#include<bits/stdc++.h>
using namespace std;
int x,sum;
int main(){
    cin>>x;
    for(int i=1;i<=x;i++){
        int k=i;
        while(i>0){
            int j=i%10;
            if(j==1) sum++;
            i/=10;
        }
        i=k;
    }
    cout<<sum;
    return 0;
}