华为机试HJ96:表示数字

简介: 华为机试HJ96:表示数字

题目描述:

将一个字符中所有的整数前后加上符号“*”,其他字符保持不变。连续的数字视为一个整数。

注意:本题有多组样例输入。

输入描述:

输入一个字符串

输出描述:

字符中所有出现的数字前后加上符号“*”,其他字符保持不变

示例:

输入:

Jkdi234klowe90a3

5151


输出:

Jkdi*234*klowe*90*a*3*

*5151*

解题思路:

这题是字符串分析题。首先创建作为结果的字符串,设置标识符start,用来识别当前是否是连续数字状态;其次,遍历字符串,当发现字母且start为false时,直接将字母加到结果字符串的后方;遇到数字后,若start为false,说明这是数字的开头,先加*再加数字,然后start设true,之后碰上数字就只加数字;当再遇到字母后,说明连续数字结束了,先加*再加字母,start设false;最后别忘了判断下结尾是否为数字,因为上面的办法针对那种结尾是数字的情况,会少了一个*,若结尾为数字,再加个*就可以了。

测试代码:

#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
    string str;
    while(getline(cin,str))
    {
        int size=str.size();
        bool start=false;
        string result;
        for(int i=0;i<size;++i)
        {
            if(str[i]>='0'&&str[i]<='9')
            {
                if(start)
                {
                    result+=str[i];
                }
                else{
                    result+='*';
                    result+=str[i];
                    start=true;
                }
            }
            else if(start)
            {
                result+='*';
                result+=str[i];
                start=false;
            }
            else{
                result+=str[i];
            }
        }
        if(str[str.size()-1]>='0'&&str[str.size()-1]<='9')
            result+='*';
        cout<<result<<endl;
    }
    return 0;
}


相关文章
|
机器学习/深度学习 数据采集 人工智能
机器学习实战 | SKLearn入门与简单应用案例
本篇内容介绍了SKLearn的核心板块,并通过SKLearn自带的数据集,讲解一个典型应用案例。
1442 0
机器学习实战 | SKLearn入门与简单应用案例
|
数据采集 数据可视化 算法
【优秀python案例】基于Python的豆瓣电影TOP250爬虫与可视化设计与实现
本文设计并实现了一个基于Python的豆瓣电影TOP250爬虫与可视化系统,通过获取电影评分、评论并应用词云和饼图等可视化技术,为用户提供了电影评价的直观展示和深入分析。
2393 3
【优秀python案例】基于Python的豆瓣电影TOP250爬虫与可视化设计与实现
|
IDE Java Linux
最简单IntelliJ IDEA安装教程(小白也能一次性安装完成)
最简单IntelliJ IDEA安装教程(小白也能一次性安装完成)
|
10月前
|
自然语言处理 JavaScript Java
《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》学习笔记——HarmonyOS架构介绍
HarmonyOS采用分层架构设计,从下至上分为内核层、系统服务层、框架层和应用层。内核层支持多内核设计与硬件驱动;系统服务层提供核心能力和服务;框架层支持多语言开发;应用层包括系统及第三方应用,支持跨设备调度,确保一致的用户体验。
739 81
|
9月前
|
JSON C++ 数据格式
C++20 高性能基础库--兰亭集库助力开发者构建高性能应用
这次分享的主题是《高性能基础库--兰亭集库助力开发者构建高性能应用》的实践经验。主要分为三个部分: 1. 业务背景 2. 雅兰亭库架构 3. 业务优化
224 9
|
9月前
|
存储 监控 算法
局域网网络管控里 Node.js 红黑树算法的绝妙运用
在数字化办公中,局域网网络管控至关重要。红黑树作为一种自平衡二叉搜索树,凭借其高效的数据管理和平衡机制,在局域网设备状态管理中大放异彩。通过Node.js实现红黑树算法,可快速插入、查找和更新设备信息(如IP地址、带宽等),确保网络管理员实时监控和优化网络资源,提升局域网的稳定性和安全性。未来,随着技术融合,红黑树将在网络管控中持续进化,助力构建高效、安全的局域网络生态。
149 9
|
9月前
|
量子技术
《量子硬件制造:降低退相干率与错误率的策略》
量子计算硬件发展中,量子比特的退相干率和错误率是关键挑战。退相干使量子比特失去相干性,影响计算准确性;错误率增加则导致结果偏差。为降低退相干率,需优化环境(低温、低噪声)、隔离技术、量子纠错码及优化设计。降低错误率则依赖提高量子比特质量、优化操作、加强监测和容错能力。综合这些策略,可提升量子计算的稳定性和可靠性,推动其高效运行与发展。
203 7
|
11月前
|
边缘计算 物联网 开发者
2024年提升开发效率的十大技巧
2024年,软件开发领域持续快速发展,新技术和工具层出不穷。本文总结了十大提升开发效率的技巧,包括精通Git Hooks自动化流程、利用Docker容器化技术、拥抱无代码/低代码平台、集成AI/ML、关注IoT、重视网络安全、采用云原生开发和微服务架构、探索边缘计算、利用AR和即时应用技术,以及参与开源软件项目。这些技巧旨在帮助开发者适应技术变革,提高工作效率。
|
缓存 分布式计算 资源调度
MapReduce入门(一篇就够了)
MapReduce入门(一篇就够了)
9218 0
MapReduce入门(一篇就够了)
|
SQL 分布式计算 关系型数据库
Sqoop入门(一篇就够了)
Sqoop入门(一篇就够了)
8030 3
Sqoop入门(一篇就够了)