1023. Have Fun with Numbers (20)
题目
给定一个数N(<=20位),乘以2,得到一个新的数,如果新数的所有位的数字是原数所有位的数字的一种新的排列,那么输出Yes和新数。否则输出No和新数。
思路
先给这个数乘以2,然后分别对原数和新数的所有位数升序排列,判断排序后的两个数是否相等。由于数字很大,没法用基本数据类型存储,所以要用数组存储。然后转成string,排序就可以了。cmp函数如下。
bool cmp(string s1, string s2) {
sort(s1.begin(),s1.end());
sort(s2.begin(),s2.end());
return s1 == s2;
}