华为笔试——C++的int型数字位排序
程序员文章站
2022-07-12 07:56:51
题目:int型数字位排序 题目介绍:输入int 型整数,按照从右至左的顺序,返回不含重复数字的新整数。 例: 输入: 99824270 输出: 072489 分析:乍一看很简单,但是很容易忽略int 型包含负整数的这一情况,还有为了应对多组测试数据需要在输入中加入while 循环。 代码: 结果如图 ......
题目:int型数字位排序
题目介绍:输入int 型整数,按照从右至左的顺序,返回不含重复数字的新整数。
例:
输入:
99824270
输出:
072489
分析:乍一看很简单,但是很容易忽略int 型包含负整数的这一情况,还有为了应对多组测试数据需要在输入中加入while 循环。
代码:
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 int main() 5 { 6 string str; 7 int size; 8 int i = 0, j = 0; 9 while (cin >> str) 10 { 11 size = str.size(); 12 char *p = new char[size]; 13 strcpy(p, str.c_str()); 14 for (i = 0; i < size; i++) 15 { 16 for (j = 0; j < size; j++) 17 { 18 if (p[i] == p[j] && i < j) 19 { 20 p[i] = 'a'; 21 } 22 } 23 } 24 if (p[0] == '-') { cout << "-"; } 25 for (i = 0; i < size; i++) 26 { 27 if (p[size - 1 - i] >= '0'&&p[size - 1 - i] <= '9') 28 { 29 cout << p[size - 1 - i]; 30 } 31 } 32 cout << endl; 33 } 34 }
结果如图:
第二组测试数据为负数,通过。
推荐阅读