题目链接:
https://pintia.cn/problem-sets/994805260223102976/problems/994805300404535296
思路:字符串处理类题目;用一个容量为10的数组储存每个数出现的次数(这里我用a[10]表示),用数组下标表示将要出现的数字0~9;这就让数组下标与出现次数对应;遍历输入的字符串N,N中的字符每出现一次就让数组a[N[i]-'0']++。
本题无坑。
代码:
#include<iostream>
using namespace std;
int main()
{
string N;
cin>>N;
int i=0,a[10]={0};
for(i=0;i<N.length();i++)
{
a[N[i]-'0']++;
}
for(i=0;i<10;i++)
{
if(a[i]!=0)
cout<<i<<":"<<a[i]<<endl;
else continue;
}
return 0;
}
下面让我们来看一下大佬的代码,链接:https://www.liuchuo.net/archives/545
代码:
#include <iostream>
using namespace std;
int main() {
string s;
cin >> s;
int a[10] = {0};
for (int i = 0; i < s.length(); i++)
a[s[i] - '0']++;
for (int i = 0; i < 10; i++) {
if (a[i] != 0)
printf("%d:%d\n", i, a[i]);
}
return 0;
}