首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
牛客607453514号
西安交通大学 Java
发布于陕西
关注
已关注
取消关注
@code5bug:
字符串分隔(二)- 华为OD统一考试(C卷)
OD统一考试(C卷)分值: 100分题解: Java / Python / C++题目描述给定一个非空字符串S,其被N个‘-’分隔成N+1的子串,给定正整数K,要求除第一个子串外,其余的子串每K个字符组成新的子串,并用‘-’分隔。对于新组成的每一个子串,如果它含有的小写字母比大写字母多,则将这个子串的所有大写字母转换为小写字母;反之,如果它含有的大写字母比小写字母多,则将这个子串的所有小写字母转换为大写字母;大小写字母的数量相等时,不做转换。输入描述输入为两行,第一行为参数K,第二行为字符串S。输出描述输出转换后的字符串示例1输入:312abc-abcABC-4aB@输出:12abc-abc-ABC-4aB-@说明:子串为12abc、abCABc、4aB@,第一个子串保留,后面的子串每3个字符一组为abC、ABc、4aB、@,abC中小写字母较多,转换为abc,ABc中大写字母较多,转换为ABC,4aB中大小写字母都为1个,不做转换,@中没有字母,连起来即12abc-abc-ABC-4aB-@示例2输入:1212abc-abCABc-4aB@输出:12abc-abCABc4aB@说明:子串为12abc、abCABc、4aB@,第一个子串保留,后面的子串每12个字符一组为abCABc4aB@,这个子串中大小写字母都为4个,不做转换,连起来即12abc-abCABc4aB@题解这个题目涉及字符串的处理,主要是分割字符串和对子串进行处理。以下是关键部分的解释:解题思路找到第一个 '-' 的位置,确定第一个子串的边界;对后续的子串进行处理,每次处理 k 个字符;统计子串中小写字母和大写字母的数量,进行大小写转换。Javaimport java.util.Scanner;/** * @author code5bug */public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int k = scanner.nextInt(); String s = scanner.next(); int pos = s.indexOf('-'); if (pos == -1) { // 不存在 '-' System.out.println(s); return; } StringBuilder result = new StringBuilder(); result.append(s.substring(0, pos)); // 第一个子串不变 for (int i = pos + 1; i < s.length(); ) { StringBuilder subBuilder = new StringBuilder(); while (i < s.length() && subBuilder.length() < k) { char c = s.charAt(i++); if (c != '-') subBuilder.append(c); } // 小写字符个数,大写字符个数 int lcnt = 0, ucnt = 0; for (char c : subBuilder.toString().toCharArray()) { if (c >= 'a' && c <= 'z') lcnt++; if (c >= 'A' && c <= 'Z') ucnt++; } // 子串大小写转换 String subString = subBuilder.toString(); if (lcnt < ucnt) { subString = subString.toLowerCase(); } else if (lcnt > ucnt) { subString = subString.toUpperCase(); } result.append("-").append(subString); } System.out.println(result); }}Pythondef solve(k: int, s: str) -> str: pos = s.find("-") if pos == -1: # 不存在 '-' return s sub_list = [] sub_list.append(s[:pos]) # 第一个子串不变 # 将 s 中的 '-' 都去掉 s1 = ''.join([s[i] for i in range(pos + 1, len(s)) if s[i] != '-']) for i in range(0, len(s1), k): if i + k <= len(s1): sub = s1[i: i+k] else: sub = s1[i:] # 小写字符个数, 大写字符个数 lcnt, ucnt = 0, 0 for ch in sub: if 'a' <= ch <= 'z': lcnt += 1 if 'A' <= ch <= 'Z': ucnt += 1 # 子串大小写转换 if lcnt > ucnt: sub = sub.lower() elif ucnt > lcnt: sub = sub.upper() sub_list.append(sub) return '-'.join(sub_list)k = int(input())s = input()print(solve(k, s))C++#include <bits/stdc++.h>using namespace std;int main(){ size_t k; string s; cin >> k >> s; size_t pos = s.find('-'); if (pos == string::npos) { // 不存在 '-' cout << s << endl; return 0; } string result; result.append(s.substr(0, pos)); // 第一个子串不变 for (size_t i = pos + 1; i < s.length();) { string sub; while (i < s.length() && sub.length() < k) { char c = s[i++]; if (c != '-') sub.push_back(c); } // 小写字符个数, 大写字符个数 int lcnt = 0, ucnt = 0; for (char c : sub) { if (c >= 'a' && c <= 'z') lcnt++; if (c >= 'A' && c <= 'Z') ucnt++; } // 子串大小写转换 if (lcnt < ucnt) { transform(sub.begin(), sub.end(), sub.begin(), ::toupper); } if (lcnt > ucnt) { transform(sub.begin(), sub.end(), sub.begin(), ::tolower); } result.append("-"); result.append(sub); } cout << result << endl; return 0;}🙏整理题解不易, 如果有帮助到您,请给点个赞 ❤️ 和收藏 ⭐,让更多的人看到。🙏🙏🙏
点赞 3
评论 0
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
04-24 13:57
门头沟学院 Java
26暑期实习——美团测开二面(已offer)
感谢团子收留!后端暑期实习从3月多投到现在,基本是简历挂/笔试挂,个别一面挂,感觉是简历项目太烂了。总时长:30分钟1.一面面试官有没有给你介绍过业务2.自我介绍3.项目相关 3.1 项目是网上找的吗(是的,但是代码都是自己写了一遍) 3.2 项目里面最核心的部分(异步秒杀) 3.3 电脑上有代码吗,打开看一下(找了一下发现在实验室电脑上,遂无) 3.4 秒杀的功能有没有测试过,以及如何保证数据库和redis的一致性4.八股 4.1 最常使用的一些设计模式 4.2 乐观锁和悲观锁及对应的使用场景 4.3 红黑树的底层细节有没有了解过,哪些数据结构中使用...
查看17道真题和解析
ai智能作图
如何判断面试是否凉了
点赞
评论
收藏
分享
04-25 13:05
叮咚买菜_商品运营(准入职员工)
叮咚买菜内推叮咚买菜内推码
管培生面经,一周oc:请简要介绍一下你自己,包括教育背景、实习经历、个人技能和兴趣爱好等。你对叮咚买菜管培生岗位有哪些了解?为什么想申请这个岗位?你对叮咚买菜有多少了解?谈谈你对公司业务模式和企业文化的认识。谈谈你对供应链管理的理解,以及供应链管理在生鲜电商行业中的重要性。如果让你为叮咚买菜策划一次促销活动,你会怎么做?(通用)分析数据对运营管理的作用,你会如何通过数据分析来优化业务? 分享一段你最有成就感的实习或实践经历,你在其中担任什么角色,取得了什么成果?请举例说明你在团队合作中遇到的一次冲突,你是如何解决的?假设你在轮岗期间发现配送流程存在效率低下的问题,你会如何着手解决?管培生工作节...
点赞
评论
收藏
分享
04-24 18:00
门头沟学院 Web前端
欢聚集团-shopline日常实习 一面凉经
时间: 2025.1一面:CSS:如何实现一个管理系统的布局估计是想考calc的使用样式隔离(vue跟react是怎么做的,具体是怎么做的)提了vue的scoped、css in js 、css modules、原子化css怎么选择一个带有具体属性的元素,可能有值也可能没有值(属性选择器选不了没有值的属性吗?)除了属性选择器用js怎么实现JS:用过TS的泛型吗,如果希望在泛型里面限制必须包含某些属性该怎么做讲一下CJS和ESM的区别?引入的产物有什么区别 假设构建环境允许,我可以直接把require引入换成import引入吗浏览器:微任务与宏任务执行顺序宏任务一定比微任务先执行吗, dom事件...
查看22道真题和解析
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
暑期后端高频问题汇总
7.4W
2
...
左手敲代码的程序员,不配拥有offer吗?
5.6W
3
...
想听实话吗,校招ssp聊聊大厂客户端
2.9W
4
...
大连某小区保安一面
2.7W
5
...
后端简历上最值得写的项目
8794
6
...
北京到底有谁在啊?
8609
7
...
五一假期,弯道超车时间表
7632
8
...
暑期实习终章
6316
9
...
美团/饿了么/京东 配送端面经
6291
10
...
五一别写你那破开源代码了
5933
创作者周榜
更多
正在热议
更多
#
找工作,行业重要还是岗位重要?
#
6556次浏览
84人参与
#
盲审过后你想做什么?
#
12237次浏览
108人参与
#
五一之后,实习真的很难找吗?
#
43850次浏览
311人参与
#
领导秒批的请假话术
#
9465次浏览
72人参与
#
安克创新求职进展汇总
#
32458次浏览
413人参与
#
如果不工作真的会快乐吗
#
100799次浏览
861人参与
#
每人推荐一个小而美的高薪公司
#
72805次浏览
1357人参与
#
京东工作体验
#
12940次浏览
90人参与
#
五一假期,你打算“躺”还是“卷”?
#
24510次浏览
388人参与
#
考研可以缓解求职焦虑吗
#
20328次浏览
241人参与
#
如何缓解入职前的焦虑
#
171533次浏览
1267人参与
#
面试等了一周没回复,还有戏吗
#
115119次浏览
1072人参与
#
找工作前vs找工作后的心路变化
#
7090次浏览
64人参与
#
应届生薪资多少才合理?
#
3031次浏览
24人参与
#
写简历别走弯路
#
714009次浏览
7848人参与
#
你喜欢工作还是上学
#
37247次浏览
407人参与
#
如果有时光机,你最想去到哪个年纪?
#
43158次浏览
765人参与
#
牛友们的论文几号送审
#
27118次浏览
623人参与
#
扒一扒那些奇葩实习经历
#
41425次浏览
770人参与
#
24届的你们现状如何了?
#
64474次浏览
377人参与
牛客网
牛客企业服务