C_C++_XY_01.整理数字字符串

  • 题目描述:

输入一个包含若干整数的字符串,负数前面带有负号‘-’,正数不带‘+’,每个整数都是个位数

请将此串进行如下整理:

1、 将串中的正负数分离,使得负数在前,正数在后;

2、 分离后的正负数分别保持在原串中的相对顺序不变;

3、 输出参数为整理后的字符串。

当输入串格式非法,不作处理,直接输出原有字符串。

  • 要求实现函数:

void ArrangeString(const char *pInputStr, long lInputLen, char *pOutputStr);

【输入】 pInputStr: 输入字符串

lInputLen: 输入字符串长度

【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;

【注意】不用考虑输入串为空的情况

  • 示例

输入:“453-51-89-4”

输出:“-5-8-445319”

输入:“5--64”

输出:“5--64”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
#include <ctype.h>
#include <string.h>
using namespace std;
 
/*
* 抓住两点:1.要么是数字,要么是负号,其他都为无效输入。2.负号后一定是一个数字。
* 思路:1.判断是否是负号,是则判断负号后是否为数字,将这个负数保存。2.不是负号是数字,则将这个数作为正数保存。
* */
void ArrangeString(const char *pInputStr, long lInputLen, char *pOutputStr)
{
    if ((pInputStr == NULL) || (lInputLen <= 0) || (pOutputStr == NULL))
    {
        return;
    }
 
    const char *copyInput = pInputStr;
    char *positiveNum = new char[lInputLen];
    char *copyOutput = pOutputStr;
 
    for (int i = 0; i < lInputLen; i++)
    {
        if (isdigit(*copyInput)) //如果是数字。
        {
            *positiveNum = *copyInput;
            positiveNum++;
            copyInput++;
        }
        else //不是数字。
        {
            if (*copyInput == '-')//是负号。
            {
                *pOutputStr = *copyInput;
                pOutputStr++;
                copyInput++;
 
                if (isdigit(*copyInput)) //负号后一定是一个数字。
                {
                    *pOutputStr = *copyInput;
                    pOutputStr++;
                    copyInput++;
                }
                else //若不是,则是无效输入。
                {
                    strcpy(copyOutput, pInputStr);
                    return;
                }
            }
            else //不是数字,且不是负号,则是无效输入。
            {
                strcpy(copyOutput, pInputStr);
                return;
            }
        }
    }
}
 
int main() {
    char *test = "453-51-89-4";
    char *test2 = "a";
    char pOutputStr[20];
    ArrangeString(test2, strlen(test2), pOutputStr);
    cout << pOutputStr << endl;
 
    return 0;
}

转载于:https://www.cnblogs.com/helloweworld/p/3200099.html

华为机试——整理数字字符串相关推荐

  1. 华为机试HJ30:字符串合并处理

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 按照指定规则对输入的字符串进行处理. 详细描述: 将输入的两个字符串合并. 对合并后 ...

  2. 华为机试HJ29: 字符串加解密

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 1.对输入的字符串进行加解密,并输出. 2.加密方法为: 当内容是英文字母时则用该英 ...

  3. 华为机试HJ4:字符串分隔

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组:  •长度不是8 ...

  4. 华为机试HJ36:字符串加密

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 有一种技巧可以对数据进行加密,它使用一个单词作为它的密匙.下面是它的工作原理:首先, ...

  5. 华为机试HJ26:字符串排序

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 编写一个程序,将输入字符串中的字符按如下规则排序. 规则 1 :英文字母从 A 到 ...

  6. 华为机试HJ14:字符串排序

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 输入x个字符串,然后根据字符串的内容进行排序 输入描述: 第一行的输入n代表接下来要 ...

  7. 华为机试HJ12:字符串反转

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串.(字符串长度不超过1 ...

  8. 华为机试HJ1:字符串最后一个单词的长度

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000. 输入描述: ...

  9. 【华为机试】【字符串】【Java】TLV解析 Ⅱ

    ■ 题目描述 描述:两端通过TLV格式的报文来通信,现在收到对端的一个TLV格式的消息包,要求生成匹配后的(tag, length, valueOffset)列表. 具体要求如下: (1)消息包中多组 ...

最新文章

  1. 大数据批量导入,解决办法,实践从定时从 sqlserver 批量同步数据到 mySql
  2. String、toString、String.valueOf()三个有啥区别?
  3. linux下tomcat无法启动
  4. css --- 伸缩布局,让图片居中
  5. python线性回归分析看相关性_机器学习入门-相关分析之简单线性回归
  6. 前端使用正则表达式从接口地址栏取值并将对应的值展示在页面上
  7. 移动端H5 腾讯地图sdk 当前位置 地址你解析 距离计算
  8. [论文评析] ArXiv-2021,Pyramid Vision Transformer A Versatile Backbone for Dense Prediction without Convo
  9. 调频去加重 matlab,调频广播中预加重和去加重问题的讨论.doc
  10. 常用的计算机网络设备有,常用网络设备有哪些,初学者必须要知道的五大网络设备...
  11. 排查黑苹果系统RTL 8125B 2.5G网卡驱动故障
  12. 一步步做一个Google 网页
  13. 故宫元宵灯会黄牛票最高要5千 律师:小心被拒
  14. JS基础—PC端网页特效
  15. SpringBoot微信小程序商城(前台+后台)源码分享
  16. PTA 7-24 书香节
  17. ubuntu使用meld/beyond compare 做git的diff工具
  18. 大龄打工程序员的出路在哪里?
  19. h5跳转app指定页面及各种坑的总结
  20. 微信会员卡开发之微信公众平台的基本配置

热门文章

  1. [模板] tarjan/联通分量/dfs树
  2. (六)api网关服务 zuul-过滤器
  3. 写一个在一个字符串(n)中寻找一个子串(m)第一个位置的函数。
  4. 阿里云 Windows Server 2012 r2 部署asp.net mvc网站 平坑之旅
  5. 如何抓住软件测试的主线及确定主要功能?
  6. 面试题 03.05. 栈排序
  7. 奇偶个数 中国大学生mooc 翁恺 C语言
  8. 关于vc++6.0“打开文件“功能问题的解决方法
  9. canoe变量和信号_CANoe的经验总结及如何进行 CAN Signal layout
  10. APP自动化测试系列之3种元素定位工具