昨天刚学的字符串的reverse,没想到今天就用上了,先将输入的字符进行字数统计,然后X2,再进行一次字符统计,相同yes,反之no。
#include<bits/stdc++.h>
using namespace std;
main()
{
char in[25];
int voc1[10]={0};
int voc2[10]={0};
cin>>in;
string res=in; //这里注意要跟输入的长度相同,直接默认初始化是不行的。
int i;
for(i=0;in[i];i++)
{
voc1[in[i]-'0']++;
}
int flag=0;
int length = i;
for(i=length-1;i>=0;i--)
{
res[length-1-i] = (in[i] - '0') * 2 + flag +'0';
flag = 0;
if(res[length-1-i] > '9')
{
res[length-1-i] -= 10;
flag = 1;
}
voc2[res[length-1-i] - '0'] ++;
}
if(flag==1)
{
res += '1';
voc2[1] ++;
}
reverse(res.begin(),res.end());
flag = 1;
for(i=0;i<10;i++)
{
if(voc1[i]!=voc2[i])
{
flag=0;
break;
}
}
if(flag==1)
printf("Yes\n");
else
printf("No\n");
cout<<res;
}