L1-058 6翻了(Java)

“666”是一种网络用语,大概是表示某人很厉害、我们很佩服的意思。最近又衍生出另一个数字“9”,意思是“6翻了”,实在太厉害的意思。如果你以为这就是厉害的最高境界,那就错啦 —— 目前的最高境界是数字“27”,因为这是 3 个 “9”!

本题就请你编写程序,将那些过时的、只会用一连串“6666……6”表达仰慕的句子,翻译成最新的高级表达。

输入格式:

输入在一行中给出一句话,即一个非空字符串,由不超过 1000 个英文字母、数字和空格组成,以回车结束。

输出格式:

从左到右扫描输入的句子:如果句子中有超过 3 个连续的 6,则将这串连续的 6 替换成 9;但如果有超过 9 个连续的 6,则将这串连续的 6 替换成 27。其他内容不受影响,原样输出。

输入样例:

it is so 666 really 6666 what else can I say 6666666666

输出样例:

it is so 666 really 9 what else can I say 27

解题思路

这个问题属于字符串处理的范畴,特别是涉及到查找和替换特定模式的字符串。在这个具体问题中,我们需要识别连续的 '6' 字符串,并根据它们的长度来进行相应的替换。

解决这个问题的关键步骤包括:

  1. 遍历字符串并计数连续的 '6' 字符。
  2. 根据连续 '6' 的数量决定替换策略:
    • 超过 9 个连续的 '6' 替换为 "27"。
    • 超过 3 个但不超过 9 个连续的 '6' 替换为 "9"。
    • 3 个及以下的连续 '6' 保持不变。
  1. 生成最终的字符串。

特别是在这段代码当中,如果currentChar == '6'时,这时候是不进行append的,而是count++,让lastChar = currentChar。直到currentChar != '6'时才进else判断当中去看6的数量是不是超过3个或者9个,如果没有的话才进行一个append

for (int i = 0; i < input.length(); i++) {char currentChar = input.charAt(i);if (currentChar == '6') {count++;} else {if (lastChar == '6') {if (count > 9) {result.append("27");} else if (count > 3) {result.append("9");} else {for (int j = 0; j < count; j++) {result.append('6');}}}result.append(currentChar);count = 0;}lastChar = currentChar;}

解题过程中遇到的问题

暂无

代码

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String input = scanner.nextLine();String output = translateExpression(input);System.out.println(output);}public static String translateExpression(String input) {StringBuilder result = new StringBuilder();int count = 0; // 用于计数连续的 '6'char lastChar = '\0'; // 保存上一个字符for (int i = 0; i < input.length(); i++) {char currentChar = input.charAt(i);if (currentChar == '6') {count++;} else {if (lastChar == '6') {if (count > 9) {result.append("27");} else if (count > 3) {result.append("9");} else {for (int j = 0; j < count; j++) {result.append('6');}}}result.append(currentChar);count = 0;}lastChar = currentChar;}// 处理字符串末尾的连续 '6'if (lastChar == '6') {if (count > 9) {result.append("27");} else if (count > 3) {result.append("9");} else {for (int j = 0; j < count; j++) {result.append('6');}}}return result.toString();}
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

海思SD3403,SS928/926,hi3519dv500,hi3516dv500移植yolov7,yolov8(9)

上一节yolov8的训练已经完成了,现在要开始做模型的转换了,这里和yolov7方式相似,但是有一些差异,尤其是yolov7的不带NMS部分的输出顺序和yolov8的输出顺序与格式是有差异的。 首先还是要自己手动加入rpn_op,这里包含了filter,sort,nms部分。 我们一个一个看,首先filter.py…

卡萨帝洗衣机:被模仿也是竞争力

如何用一句话形容某家企业的竞争力和领导地位&#xff1f;“某某一出手&#xff0c;就知有没有。”这句话相当匹配。如果再加一条&#xff0c;“被模仿”也恰到好处。 从顶流公司OpenAI&#xff0c;苹果Apple Vision Pro&#xff0c;再到卡萨帝洗衣机&#xff0c;被跟随、模仿…

模型的召回率(Recall)

召回率&#xff08;Recall&#xff09;&#xff0c;也称为灵敏度&#xff08;Sensitivity&#xff09;或真正例率&#xff08;True Positive Rate&#xff09;&#xff0c;是用于评估二分类模型性能的指标之一。召回率衡量了模型正确识别正例的能力&#xff0c;即在所有实际正例…

多行SQL转成单行SQL

如下图所示 将以上多行SQL转成单行SQL 正则表达式如下 (?s)$[^a-zA-Z()0-9]*结果如下 灵活使用,也未必只能使用Sublime Text 提供了一个在线工具

大数据质量管制规范示例

大数据质量管制规范示例 一、前提概要二、相关概念三、管理原则四、治理委员五、应用管理六、查验方式七、考核比率八、扣分标准九、责任划分十、追责范围十一、其它条例十二、总结 一、前提概要 在当今大数据信息时代&#xff0c;大数据平台&#xff08;大数据平台开发规范示…

JVM 如何判断一个对象可以被回收

Hi&#xff0c; 我是 浮生。 今天分享一道一线互联网公司必问的面试题。 ”JVM 如何判断一个对象可以被回收“ 关于这个问题&#xff0c;来看看高手的回答。 一、问题解析 在 JVM 里面&#xff0c;要判断一个对象是否可以被回收&#xff0c;最重要的是判断这个对象是否还在被…

CyclicBarrier带你玩转并发编程

文章目录 1. 技术背景1.1 并发编程简介 2. 解决的问题2.1 并发协同与同步问题2.2 CountDownLatch与CyclicBarrier的区别 3. 使用场景3.1 多线程任务协同3.2 任务分解与合并3.3 数据分析与计算3.4 游戏开发中的同步3.5 生产者-消费者问题 4. 技术点讲解4.1 CyclicBarrier概述4.2…

项目管理工具--禅道

一.禅道的安装 1.1.安装 二.禅道的使用 ​编辑 三.用产品经理的方式登录 3.1添加产品 3.2提需求 3.3添加产品需求 3.4创建项目 ​编辑 四.项目经理方式登录 ​编辑 4.1关联需求 ​编辑 4.2分解任务 五.测试方式登录 5.1测试建立用例 ​编辑 5.2需要换成项…

vue2 使用pdf.js 实现pdf预览,并可复制文本

需求&#xff1a;pdf预览&#xff0c;并且可以选中pdf的内容进行复制。 在ruoyi的vue前端项目中用到&#xff0c;参考了网上不少文章&#xff0c;因为大部分没给具体的pdf.js版本&#xff0c;导致运行过程中报各种api 错误&#xff0c;经过尝试以下版本可用&#xff0c…

文件夹重命名:一次性解决文件夹名称混乱,中文翻译成英文

在我们的日常生活和工作中&#xff0c;文件夹的名称是我们组织和查找文件的重要方式。然而&#xff0c;随着时间的推移&#xff0c;文件夹名称可能会变得混乱不堪&#xff0c;甚至包含中英文混合的情况&#xff0c;这给我们的文件管理带来了极大的不便。那么&#xff0c;如何一…

【RabbitMQ】快速入门及基本使用

一、引言 1、、消息队列 Ⅰ、什么是消息队列&#xff1f; 消息队列是一种进程间通信或同一进程的不同线程间的通信方式&#xff0c;软件的贮列用来处理一系列的输入&#xff0c;通常是来自用户。消息队列提供了异步的通信协议&#xff0c;每一个贮列中的纪录包含详细说明的数据…

java httpclient Post

一、Maven引用httpclient <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.3</version> </dependency> 二、直接上代码 private void PostData(){CloseableHt…