使用map<char,int>来记录不同char类型数字出现的次数,成立条件为map1==map2(各种数字出现的个数相等)
用string类型处理字符串,唯一需要注意的是对string做double处理后可能需要进位
#include<iostream>
#include<string>
#include<map>
using namespace std;
map<char,int> mp1,mp2;
string Double(string x){
string str;
int t=0;//用来记录下一位的进位
for(int i=x.length()-1;i>=0;i--){
int k=x[i]-'0';
k=k*2+t;
int a=k%10;
str=to_string(a)+str;
t=k/10;//给下一位
if(i==0&&t!=0)//如果是最前面位,可能会进位,所以在最后可能第一位要加上to_string(t)
str=to_string(t)+str;
}
return str;
}
int main(){
string str1;
cin>>str1;
for(int i=0 ;i<str1.length() ;i++)
mp1[str1[i]]++;
string str2 = Double(str1);
for(int i=0 ;i<str2.length() ;i++)
mp2[str2[i]]++;
if(mp1 == mp2&&str1.length()==str2.length())
cout << "Yes";
else
cout << "No";
cout << endl << str2;
return 0;
}