华为笔试——C++的int型数字位排序

题目: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 }

结果如图:

第二组测试数据为负数,通过。

原文地址:https://www.cnblogs.com/ljy1227476113/p/9635312.html

时间: 2024-10-14 20:32:33

华为笔试——C++的int型数字位排序的相关文章

2015华为机试—— 输入整型数组和排序标识,对其元素按照升序或降序进行排序

接口说明 原型: void sortIntegerArray(Integer[] pIntegerArray, int iSortFlag); 输入参数: Integer[] pIntegerArray:整型数组 int  iSortFlag:排序标识:0表示按升序,1表示按降序 输出参数: 无 返回值: void 这题比较简单,也没什么思路好说,直接看代码 代码如下: public final class Demo { // 功能:输入整型数组,对其元素按照升序或降序进行排序 // 输入:pI

【华为OJ】【024-字符串排序】

[华为OJ][算法总篇章] [华为OJ][024-字符串排序] [工程下载] 题目描述 编写一个程序,将输入字符串中的字符按如下规则排序. 规则1:英文字母从A到Z排列,不区分大小写.如,输入:Type 输出:epTy 规则2:同一个英文字母的大小写同时存在时,按照输入顺序排列.如,输入:BabA 输出:aABb 规则3:非英文字母的其它字符保持原来的位置.如,输入:By?e 输出:Be?y 样例: 输入: A Famous Saying: Much Ado About Nothing(2012

求int型数据在内存中存储时1的个数

1.求int型数据在内存中存储时1的个数 输入一个int型数据,计算出该int型数据在内存中存储时1的个数. 我们非常easy想到例如以下方法: #include <iostream> using namespace std; int main() { int n,cnt=0; cin>>n; while(n) { if(n%2==1) cnt++; n=n/2; } cout<<cnt<<endl; return 0; } 在对代码进行測试时输入负数无法得

C语言int型数据范围

在32位及以上操作系统上,int型数据的十进制表示范围是:-231 到   231-1.原因:因为int是带符号类型,所以最高位为符号位,于是最大表示的正数的原码(正数的原码和补码相同):01111111 11111111 11111111 11111111,也就是2的31次方减1.再来看最小值,-2的31次方的原码表示为10000000 00000000 00000000 00000000,此时最高位的数字既代表符号(1代表是负数,0代表是正数),也代表数值.求它的补码(除符号位外按位取反,最

C++读写TXT文件中的string或者int型数据以及string流的用法

对文件的读写操作是我们在做项目时经常用到的,在网上看了很多博客,结合自身的项目经验总结了一下,因此写了这篇博客,有些地方可能直接从别的博客中复制过来,但是都会注明出处. 一.文件的输入输出 fstream提供了三个类,用来实现c++对文件的操作.(文件的创建.读.写). ifstream -- 从已有的文件读入 ofstream -- 向文件写内容 fstream - 打开文件供读写 文件打开模式: ios::in             只读 ios::out            只写 io

求int型数组和最大子数组 续

之前的博文里已经实现过该程序的构思.编译.运行,本次就不再重复与之相雷同的内容. 题目:与别人借组,借助求int型数组最大和子数组的问题,考虑大数溢出和int取值范围的问题 要求: 调试程序  当子数组所含元素值超过int型数组取值范围时,会出现什么情况? 实现: 在接触到这个问题之前,肯定的说,我从来没有考虑过这个问题,不是自己不知道int型数值的取值范围,而是自己根本没有注意过这个问题,也没有想过数的取值会超过这个范围.知道这个“问题”后我做了下面的事情: a.和同学借组,查阅相关资料,了解

(一)求 int 型数据在内存中存储时 1 的个数

题目:求 int 型数据在内存中存储时 1 的个数 描述:输入一个 int 型数据,计算出该 int 型数据在内存中存储时 1 的个数 运行时间限制: 10 sec 内存限制:128 MByte 输入:输入一个整数(int 类型) 输出:这个数转换成2进制后,输出 1 的个数 1 #include <stdio.h> 2 3 int GetCount(int num) 4 { 5 /* 功能实现 */ 6 int ret = 0; 7 8 while (num) 9 { 10 num &

阿里笔试编程题——根据商品编号排序(多级排序)

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #e4af0a; min-height: 14.0px } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; f

华为笔试练习题----解析9进制,11进制的字符串为10进制的数字输出

                                                                              解析9进制,11进制的字符串为10进制的数字输出 描述: 解析9进制,11进制的字符串为10进制的数字输出,输入的字符串有效位(0v0012345678)长度不超过8位,前面的00不算做有效位.解析后以10进制的数字输出.如果解析到非法字符串则返回-1 9进制: 9进制的数的范围:0,1,2,3,4,5,6,7,8 9进制的开始为:0V或者0