【华为上机真题 2022】字符串分隔

news2024/11/27 2:42:08

🎈 作者:Linux猿

🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

🎈 关注专栏: 数据结构和算法成神路【精讲】优质好文持续更新中……🚀🚀🚀

🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬


目录

一、题目描述

1.1 输入描述

1.2 输出描述

1.3 测试样例

1.3.1 示例1

1.3.2 示例 2

二、解题思路

三、代码实现

四、时间复杂度


注意:题目来源于网络用户分享,本文仅分享做题思路和方法,如有侵权请联系我删除!

一、题目描述

给定一个非空字符串 S,其被 N 个 ‘-’ 分隔成 N+1 的子串,给定正整数 K,要求除第一个子串外,其余的子串每 K 个字符组成新的子串,并用 ‘-’ 分隔。

对于新组成的每一个子串:

(1)如果它含有的小写字母比大写字母多,则将这个子串的所有大写字母转换为小写字母;

(2)反之,如果它含有的大写字母比小写字母多,则将这个子串的所有小写字母转换为大写字母;

(3)大小写字母的数量相等时,不做转换。

1.1 输入描述

输入为两行,第一行为参数 K,第二行为字符串 S。

1.2 输出描述

输出转换后的字符串。

1.3 测试样例

1.3.1 示例1

输入

3
12abc-abCABc-4aB@

输出

12abc-abc-ABC-4aB-@

说明:子串为 12abc、abCABc、4aB@,第一个子串保留,后面的子串每 3 个字符一组为 abC、ABc、4aB、@,abC 中小写字母较多,转换为 abc,ABc 中大写字母较多,转换为ABC,4aB中大小写字母都为 1 个,不做转换,@中没有字母,连起来即12abc-abc-ABC-4aB-@

1.3.2 示例 2

输入

12
12abc-abCABc-4aB@

输出

12abc-abCABc4aB@

说明:子串为 12abc、abCABc、4aB@,第一个子串保留,后面的子串每 12 个字符一组为 abCABc4aB@,这个子串中大小写字母都为 4 个,不做转换,连起来即 12abc-abCABc4aB@
 

二、解题思路

本题是一个模拟题,提取通过 ‘-’ 分隔的字符串,以输入的 K 长度为分隔重新划分,但是,新划分的字符串需要判断大小写字母的个数,并根据大小写字母个数对字符串进行转化。

三、代码实现

代码实现如下所示。

#include <iostream>
#include <sstream>
using namespace std;

//处理大小写字母的转化
string solve(string str)
{
    int n = str.size();
    int num1 = 0, num2 = 0;
    for (int i = 0; i < n; ++i) {
        if (islower(str[i])) {
            num1++;
        }
        if (isupper(str[i])) {
            num2++;
        }
    }

    if (num1 > num2) {
        for (int i = 0; i < n; ++i) {
            if (isupper(str[i])) {
                str[i] = tolower(str[i]);
            }
        }
    }
    if (num1 < num2) {
        for (int i = 0; i < n; ++i) {
            if (islower(str[i])) {
                str[i] = toupper(str[i]);
            }
        }
    }
    return str;
}

int main()
{
    int K;
    while (cin>>K) {
        getchar();
        string str;
        getline(cin, str);
        stringstream stream(str);

        bool flag = true;
        string ans;
        string preStr = "";
        while (getline(stream, str, '-')) {
            if (flag) { // 第 1 个不处理
                ans += str;
                flag = false;
                continue;
            }
            str = preStr + str;
            if ((int)str.size() >= K) {
                while ((int)str.size() >= K) {
                    ans += '-' + solve(str.substr(0, K));
                    str = str.substr(K);
                }
            }
            preStr = str;
        }
        if (preStr.size()) {
            ans += '-' + preStr;
        }
        cout<<ans<<endl;
    }
    return 0;
}

在上述代码中,通过 getline 分割 ‘-’ 分割的字符串,然后根据 K 进行划分。函数 solve 处理大小写字母的转化。

四、时间复杂度

时间复杂度:O(n^2)

在上述代码中,需要先根据 ‘-’ 分割字符串,然后还需要遍历每个按照 K 新划分的字符串,根据新字符串中大小写字母的个数转化字符串。


🎈 感觉有帮助记得「一键三连支持下哦!有问题可在评论区留言💬,感谢大家的一路支持!🤞猿哥将持续输出「优质文章回馈大家!🤞🌹🌹🌹🌹🌹🌹🤞


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/48028.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java---线程详解(并发并行,Thread类,Runnable接口,同步机制,线程死锁......)

目录 一、概念 1、进程 2、线程 &#xff08;1&#xff09;单线程 &#xff08;2&#xff09;多线程 &#xff08;3&#xff09;并发 &#xff08;4&#xff09;并行 二、线程基本使用 1、创建线程的两种方式 &#xff08;1&#xff09;继承Thread类 &#xff08;2&am…

esp8266用arduino连上阿里云(图文操作,100%成功)

最近学习了esp8266/esp32单片机。第一次使用arduino这个IDE&#xff0c;搞多了Keil5&#xff0c;这个实在是有点不习惯。进步都是困难的&#xff0c;现在回想起来&#xff0c;发现也没多难&#xff0c;回到正题。 准备软件&#xff1b;Arduino IDE 准备硬件&#xff1a;esp82…

面试:插件化相关---activity

我们先来看下Android常规Activity的启动流程 如何评价360的Android插件化框架RePlugin&#xff1f; - 知乎 1、调用Context.startActivity -> ActivityManagerProxy -> AMS, AMS通过Intent从PMS拿到ActivityInfo并创建ActivityRecord和token放入前台ActivityStack&…

macOS端React的项目WebPack热更新(HMR)失效问题分析及解决,原因竟是Windows文件系统不区分大小写导致

项目场景&#xff1a; 最近做的项目是一个使用UmiJS搭建的React的前端老项目&#xff0c;项目是上一个开发团队遗留下来的老项目&#xff0c;我们接着在原来的基础上开发。团队成员中有的是Windows电脑&#xff0c;有的是Mac电脑&#xff0c;所以存在规范不统一的情况。 问题描…

[附源码]计算机毕业设计springboot基于web的建设科技项目申报管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

微服务框架 SpringCloud微服务架构 5 Nacos 5.6 环境隔离

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构5 Nacos5.6 环境隔离5.6.1 环境隔离 - namespace5.6.2 使用 namespace5.6.…

Python的PyQt框架的使用-创建主窗体篇

Python的PyQt框架的使用-构建环境篇一、前言二 、创建主窗体一、前言 个人主页: ζ小菜鸡大家好我是ζ小菜鸡&#xff0c;小伙伴们&#xff0c;让我们一起来学习Python的PyQt框架的使用。如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连) 二 、创建主窗体 &#xff08;1&am…

【Linux】高频指令及简单的vim使用(0基础带你快速入门)

目录 一、目录操作指令 1.1、ls 1.2、pwd 1.3、cd 1.4、touch 1.5、cat 1.6、echo 1.7、mkdir 1.8、rm 1.9、mv 1.10、cp 二、Linux中如何手动安装插件 三、vim 3.1、打开文件 3.2、编辑文件 3.3、保存退出 一、目录操作指令 1.1、ls 语法&#xff1a; 第一种&#…

高维多元时序数据之间的相似性度量

1. 简介 时间序列作为一种按时间顺序排列的特殊数据&#xff0c;是数据挖掘的重要研究内容&#xff0c;其中包括数据准备、数据选择、数据预处理、数据缩减、数据挖掘目标确定、挖掘算法确定、数据挖掘、模式解释及知识评价&#xff19;个处理步骤&#xff37;。数据挖掘方面的…

@SentinelResource注解的使用

SentinelResource注解的使用 1、按资源名称限流后续处理 前置条件&#xff1a; 启动Nacos启动Sentinel 1.1、修改cloudalibaba-sentinel-service8401 引入自己的API通用包 <!--自己的公共包,可以使用Payment支持Entuty--> <dependency><groupId>com.zcl.s…

word目录怎么自动生成?用这个方法,快速自动生成

当我们在写论文或者是编写文档的时候&#xff0c;都需要生成导航目录。很多人写完文档之后想要将其自动生成目录&#xff0c;但是不知道该怎么操作&#xff1f;word目录怎么自动生成&#xff1f;下面我就为大家分享三个步骤&#xff0c;快速自动设置文档的目录。 操作环境&…

SpringBoot配置文件

文章目录配置文件的作用配置文件的格式.properties 配置文件说明.properties 基本语法.properies 读取配置信息.yml 配置说明.yml 基本语法.yml 进阶使用.yml 读取配置信息.properties VS .yml配置文件的作用 整个项目中所有重要的数据都是在配置⽂件中配置的&#xff0c;比如…

社区系统项目复盘-6

文章目录什么是Elasticsearch&#xff1f;Spring是怎么整合Elasticsearch的&#xff1f;开发社区搜索功能Elasticsearch实现全文搜索功能什么是Elasticsearch&#xff1f; Elasticsearch简介 一个分布式的、Restful风格的搜索引擎支持对各种类型的数据的检索搜索速度快&#xf…

FSR-Unity-URP 1.0 的性能和兼容性问题

1&#xff09;FSR-Unity-URP 1.0 的性能和兼容性问题 ​2&#xff09;计算大文件MD5耗时问题 3&#xff09;如何监听Unity即将Reload Script 4&#xff09;如何对Unity游戏的Android崩溃和ANR问题进行符号化解析 这是第315篇UWA技术知识分享的推送。今天我们继续为大家精选了若…

2022年GPS广播星历精密星历如何下载

注意&#xff1a;&#xff01;&#xff01;网上现有很多教程的星历下载地址 ftp://cddis.gsfc.nasa.gov/已经访问不了了&#xff0c;最新的方法见下文&#xff0c;亲测有效~ 1、星历下载网址&#xff08;需要注册一下&#xff09;Earthdata Loginhttps://cddis.nasa.gov/archiv…

我的居家生活--爱摸鱼的美工(二)

-----------作者&#xff1a;天涯小Y 这失败的拉花叫”海上升明月” 呜一 做自己&#xff0c;不太好也没关系 我给自己居家的时间不多了 11月30日我决定”解封” 从身心开始&#xff0c;愿脚步跟上 突如其来的“银丝” 让我沮丧 黑芝麻的疗法因快递又安排不上 算了.幼笑吧 白发…

C#线程的参数传递、获取线程返回值以及处理多线程冲突

C#作为一门优秀的开发语言&#xff0c;现在国内的流行度貌似不如以前&#xff0c;大家都不在意它的无所不能了。 C#的灵活与强大只有在经常使用中才会有所领悟&#xff0c;适当地掌握它还是有必要的。 在这里总结一下线程的传递参数以及获取线程的返回值&#xff0c;还有处理多…

【毕业设计】17-基于单片机的矿井提升机_步进电机控制装置设计(原理图+仿真+源代码+实物图+答辩论文+答辩PPT)

typora-root-url: ./ 【毕业设计】17-基于单片机的矿井提升机_步进电机控制装置设计&#xff08;原理图仿真源代码实物图答辩论文答辩PPT&#xff09; 文章目录typora-root-url: ./【毕业设计】17-基于单片机的矿井提升机_步进电机控制装置设计&#xff08;原理图仿真源代码实…

IB中文(语言与文学)介绍分析

Intro to Group 1 Subjects&#xff1a;语言A 语言A科目主要针对学生的母语语言运用与文学鉴赏能力进行考核&#xff0c;旨在培养学生文学素养的同时注重社会关怀、全球视角与批判性思维的意识形成。 IB文凭要求每位学生至少在语言A中学习一门课程。 今天我们就来仔细介绍一下其…

全波形反演的深度学习方法: 第三章 常规反演

本章介绍反演的基础知识, 以及工程中的常规反演. 仅供内部培训. 3.1 地震数据采集 地震勘探中常使用人工激发的振动进行数据采集. 相应装置包括: 激发器是产生震动的装置, 如炸药, 地震车 (撞击地面). 在城市道路等具有车辆会产生振动的地方, 也可以不安装这类装置;地震检波…