当前位置: 首页 > news >正文

华为OD机试-字符串分割

题目描述

给定一个非空字符串S,其被N个‘-’分隔成N+1的子串,给定正整数K,要求除第一个子串外,其余的子串每K个字符组成新的子串,并用‘-’分隔。对于新组成的每一个子串,如果它含有的小写字母比大写字母多,则将这个子串的所有大写字母转换为小写字母;反之,如果它含有的大写字母比小写字母多,则将这个子串的所有小写字母转换为大写字母;大小写字母的数量相等时,不做转换。
输入描述:
输入为两行,第一行为参数K,第二行为字符串S。
输出描述:
输出转换后的字符串。
示例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-@
示例2
输入
12
12abc-abCABc-4aB@
输出
12abc-abCABc4aB@
说明
子串为12abc、abCABc、4aB@,第一个子串保留,后面的子串每12个字符一组为abCABc4aB@,这个子串中大小写字母都为4个,不做转换,连起来即12abc-abCABc4aB@

代码实现

# coding:utf-8
class Solution:def stringSplit(self, k, s):begin = 0end = 0# 遍历字符串,遇到第一个分隔符的时候跳出,将第一个子串存下来,不需要做大小写转换for i in s:if i == '-':breakelse:end += 1res = s[begin:end]begin = end + 1# 从第二个子串开始判断while begin < len(s):tmp = ''lower = 0linefix = 0# 每K个字符串作为一个新的子串长度for i in range(k):while begin + i + linefix <= len(s) - 1 and s[begin + i + linefix] == '-':  # 遇到分隔符,直接跳过不处理,分隔符计数器+1linefix += 1if begin + i + linefix > len(s) - 1:  # 超出原字符串长度,跳出breakif s[begin + i + linefix].islower():  # 当前字符为小写,则小写计数器加1lower += 1elif s[begin + i + linefix].isupper():  # 当前字符为大写,则小写计数器减1lower -= 1tmp = tmp + s[begin + i + linefix]# 小写字符多则全部转小写,反之,转大写if lower > 0:res = res + '-' + tmp.lower()if lower < 0:res = res + '-' + tmp.upper()if lower == 0:res = res + '-' + tmpbegin = begin + k + linefixreturn resif __name__ == '__main__':k = input("K:")s = input("s:")solution = Solution()print(solution.stringSplit(int(k), s))

相关文章:

华为OD机试-字符串分割

题目描述 给定一个非空字符串S&#xff0c;其被N个‘-’分隔成N1的子串&#xff0c;给定正整数K&#xff0c;要求除第一个子串外&#xff0c;其余的子串每K个字符组成新的子串&#xff0c;并用‘-’分隔。对于新组成的每一个子串&#xff0c;如果它含有的小写字母比大写字母多…...

element-ui的el-dialog,简单的封装。

el-dialog是使用率很高的组件 使用el-dialog很多都是按照文档的例子&#xff0c;用一个变量控制是否显示&#xff0c;再来一个变量控制标题。 如果我这个对话框多个地方使用的话还要创建多个变量&#xff0c;甚至关闭之后还要清空一些变量&#xff0c;应该可以简化一点。我写…...

SpringBoot引入外部jar打包失败解决,SpringBoot手动引入jar打包war后报错问题

前言 使用外部手动添加的jar到项目&#xff0c;打包时出现jar找不到问题解决 处理 例如项目结构如下 引入方式换成这种 <!-- 除了一下这两种引入外部jar&#xff0c;还是可以将外部jar包添加到maven中&#xff08;百度查&#xff09;--><!-- pdf转word --><…...

HTTP基础:学习HTTP协议的基本知识,了解请求和响应的过程

HTTP&#xff08;Hypertext Transfer Protocol&#xff0c;超文本传输协议&#xff09;是一种用于传输超媒体文档&#xff08;如HTML&#xff09;的应用层协议&#xff0c;它是Web中最基本的协议。 HTTP请求和响应都是由客户端和服务器之间进行的。 一个完整的HTTP请求由以下几…...

Spark基础-任务提交相关参数

整理一下用过的spark相关的参数 spark应用提交命令spark-submit的常用参数&#xff08;使用spark-submit --help可以查看所有参数&#xff0c; 有一些参数在下面的spark配置属性定义了&#xff0c;也没有额外列出&#xff09; 参数默认值含义--master local[*]spark集群的mast…...

ROS-PyQt小案例

前言&#xff1a;目前还在学习ROS无人机框架中&#xff0c;&#xff0c;&#xff0c; 更多更新文章详见我的个人博客主页【前往】 ROS与PyQt5结合的小demo&#xff0c;用于学习如何设计一个界面&#xff0c;并与ROS中的Service和Topic结合&#xff0c;从而控制多个小乌龟的运动…...

【算法】双指针——leetcode盛最多水的容器、剑指Offer57和为s的两个数字

盛水最多的容器 &#xff08;1&#xff09;暴力解法 算法思路&#xff1a;我们枚举出所有的容器大小&#xff0c;取最大值即可。 容器容积的计算方式&#xff1a; 设两指针 i , j &#xff0c;分别指向水槽板的最左端以及最右端&#xff0c;此时容器的宽度为 j - i 。由于容器…...

idea 使用debug 启动项目的时候 出现 Method breakpoints may dramatically slow down debugging

问题: 1. 写了一段时间的代码&#xff0c;在debug启动项目后提示&#xff1a;Method breakpoints may dramatically slow down debugging 但是正常启动是可以的&#xff0c;debug不行。 2. idea 里面的项目&#xff0c;很多地方都有断点&#xff0c;现在想要取消全部的断点…...

Tomcat的一些配置问题(server.xml/catalina.sh)

在同一机器中运行多个Tomcat时&#xff0c;如果不修改server.xml的端口参数&#xff0c;会出现端口冲突使得Tomcat异常&#xff1b;Tomcat默认配置中&#xff0c;JAVA_OPTS不会设置太大&#xff0c;一般需要在catalina.sh中增加一行配置来加大该参数值。 目录 1.Server.xml配置…...

飞天使-jenkins进行远程linux机器修改某个文件的思路

文章目录 jenkins配置的方式jenkins中执行shell的思路 jenkins配置的方式 jenkins中执行shell的思路 下面的脚本别照抄&#xff0c;只是一个思路 ipall"$ips"# 将文本参数按行输出为变量 while IFS read -r line; doecho "$line" if [[ ! -z $line ]] &…...

Revit SDK 介绍:PanelSchedule 配电盘明细表

前言 这个例子介绍 Revit 的配电盘明细表&#xff0c;PanelSchedule。Revit 的电器专业在国内用的并不是十分广泛&#xff0c;但从功能上来说还是比较完整的。 内容 这个例子里有三个命令&#xff1a; PanelScheduleExport - 导出配电盘明细表InstanceViewCreation - 创建配…...

Java后端实现不用pagehelper。手写分页如何实现?

Java后端实现不用pagehelper。手写分页如何实现? 如果你不使用PageHelper这样的分页插件&#xff0c;你可以手动实现分页逻辑。下面是一个使用Java后端手写分页的示例&#xff1a; 首先&#xff0c;确定每页显示的数据量和当前页码。 int pageSize 10; // 每页显示的数据量…...

spring 缓存

1.spring缓存注解&#xff0c;可以丢在controller&#xff0c;也可以丢在service&#xff0c;也可以丢在mapper。 2.手动操作缓存使用&#xff1a; Autowiredprivate CacheManager cacheManager;3.添加缓存 //添加缓存 Override Cacheable(cacheNames "test", key…...

vue3.0 element-plus 不同版本 el-popover 循环优化

表格内循环el-popover 渲染以后的页面&#xff0c;数据量很大的时候页面会卡&#xff0c;生成的代码&#xff1a; 解决思路&#xff1a;将el-popover提出来&#xff0c;不参与循环&#xff0c;让el-popover只渲染一次 1、以1.1.0-beta.24版为例&#xff08;低版本&#xff09;…...

计算机网络实验4:HTTP、DNS协议分析

文章目录 1. 主要教学内容2. HTTP协议3. HTTP分析实验【实验目的】【实验原理】【实验内容】【实验思考】 4. HTTP分析实验可能遇到的问题4.1 捕捉不到http报文4.2 百度是使用HTTPS协议进行传输4.3 Wireshark获得数据太多如何筛选4.4 http报文字段含义不清楚General&#xff08…...

敏捷项目管理如何做好Sprint Backlog?迭代管理

什么是Sprint Backlog&#xff1f; Sprint Backlog是Scrum的主要工件之一。在Scrum中&#xff0c;团队按照迭代的方式工作&#xff0c;每个迭代称为一个Sprint。在Sprint开始之前&#xff0c;PO会准备好产品Backlog&#xff0c;准备好的产品Backlog应该是经过梳理、估算和优先…...

实验三 图像分割与描述

一、实验目的&#xff1a; &#xff08;1&#xff09;进一步掌握图像处理工具Matlab&#xff0c;熟悉基于Matlab的图像处理函数。 &#xff08;2&#xff09;掌握图像分割方法&#xff0c;熟悉常用图像描述方法。 二、实验原理 1.肤色检测 肤色是人类皮肤重要特征之一&#xff…...

npm使用国内淘宝镜像的方法(两种)

一、通过命令配置 1、设置淘宝镜像源 npm config set registry https://registry.npm.taobao.org/ 2、设置官方镜像源 npm config set registry https://registry.npmjs.org 3、查看镜像使用状态&#xff1a; npm config get registry 如果返回https://registry.npm.taobao.org…...

05应用程序设计和文件操作

一、 给应用程序设置菜单栏 比如: 在qt中,如果想要使用菜单栏功能,那么界面的基类要选择QMainWindow,不能选择QWidget QDialog 实现菜单栏步骤如下: 第一步:在UI设计师,直接双击菜单栏 第二步:在UI设计师,修改文本内容和其他设置 进行设置 设置的效果图如下: …...

【果树农药喷洒机器人】Part8:果树对靶变量喷药实验

&#x1f4e2;&#xff1a;博客主页 【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d; 收藏 ⭐不迷路&#x1f649; &#x1f4e2;&#xff1a;内容若有错误&#xff0c;敬请留言 &#x1f4dd;指正…...

Hunyuan-MT-7B保姆级教程:Pixel Language Portal在树莓派5上的轻量级翻译终端部署

Hunyuan-MT-7B保姆级教程&#xff1a;Pixel Language Portal在树莓派5上的轻量级翻译终端部署 1. 项目介绍与核心价值 Pixel Language Portal&#xff08;像素语言跨维传送门&#xff09;是一款基于Tencent Hunyuan-MT-7B大语言模型的创新翻译工具。与传统翻译软件不同&#…...

收藏!小白程序员必看:Agent和工作流是最佳拍档,教你如何协同它们(附案例)

文章探讨了AI智能体&#xff08;Agent&#xff09;和工作流工具的关系&#xff0c;指出它们并非竞争对手&#xff0c;而是最佳拍档。Agent擅长自主决策和动态规划&#xff0c;适用于探索性和不确定性任务&#xff1b;工作流则负责流程编排和确定性执行&#xff0c;适用于重复性…...

2025.12晶晨S905L3S-L3SB安卓9通刷实战:当贝桌面加持,解锁多品牌盒子新玩法

1. 晶晨S905L3S-L3SB通刷包的前世今生 第一次听说晶晨S905L3S-L3SB芯片能通刷时&#xff0c;我正对着家里三台不同品牌的电视盒子发愁。这些盒子有的来自运营商赠送&#xff0c;有的是二手市场淘来的&#xff0c;虽然硬件配置相近&#xff0c;但系统体验天差地别。直到发现这个…...

LangChain 1.0 中间件实战:5个钩子函数让你的Agent像专业工程师一样思考

LangChain 1.0中间件深度实践&#xff1a;5个钩子函数打造工程级Agent思维 当我们在2023年首次接触LangChain时&#xff0c;它还是一个以Chain为核心的实验性框架。如今&#xff0c;LangChain 1.0的发布标志着AI Agent开发正式进入生产就绪阶段。本文将带您深入探索其最具革命性…...

终极指南:Redaxios参数序列化完全掌握,自定义查询字符串生成逻辑如此简单

终极指南&#xff1a;Redaxios参数序列化完全掌握&#xff0c;自定义查询字符串生成逻辑如此简单 【免费下载链接】redaxios The Axios API, as an 800 byte Fetch wrapper. 项目地址: https://gitcode.com/gh_mirrors/re/redaxios Redaxios是一个轻量级的Fetch封装库&a…...

电话号码定位开源工具实战完全指南:从部署到企业应用

电话号码定位开源工具实战完全指南&#xff1a;从部署到企业应用 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: https://gitcode.com/gh_mirro…...

Linux网络命名空间实战:5分钟搞定veth pair跨命名空间通信

Linux网络命名空间实战&#xff1a;5分钟搭建隔离通信环境 在云计算和容器化技术蓬勃发展的今天&#xff0c;Linux网络命名空间已经成为系统管理员和开发者的必备技能。想象一下&#xff0c;当你需要在单台物理机上同时运行多个需要独立网络环境的服务时&#xff0c;传统方式可…...

5个步骤彻底修复Windows更新问题:Reset Windows Update Tool完整指南

5个步骤彻底修复Windows更新问题&#xff1a;Reset Windows Update Tool完整指南 【免费下载链接】Reset-Windows-Update-Tool Troubleshooting Tool with Windows Updates (Developed in Dev-C). 项目地址: https://gitcode.com/gh_mirrors/re/Reset-Windows-Update-Tool …...

AzurLaneAutoScript:碧蓝航线终极自动化助手完全指南

AzurLaneAutoScript&#xff1a;碧蓝航线终极自动化助手完全指南 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研&#xff0c;全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript 在碧蓝航线…...

爱毕业aibiye等8款智能应用显著改善了论文撰写体验,编程与学术研究流程更加顺畅

文章总结表格&#xff08;工具排名对比&#xff09; 工具名称 核心优势 aibiye 精准降AIGC率检测&#xff0c;适配知网/维普等平台 aicheck 专注文本AI痕迹识别&#xff0c;优化人类表达风格 askpaper 快速降AI痕迹&#xff0c;保留学术规范 秒篇 高效处理混AIGC内容&…...