昨天剛學的字符串的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;
}