华为OD上机考试真题(Java)——字符串分割

ops/2025/1/17 4:10:28/

题目

给定一个字符串,只包含小写字母,字符串长度是 5-30。
求:是否存在两个节点,使得字符串被这两个节点分成三个部分,每个部分的 ASCII 码的值之和都相等。如果存在输出两个节点下标,以逗号隔开。下标从 0 开始,如果不存在,则输出 0,0。如果存在答案,则是唯一解。

示例一:

输入

abcbbbcab

输出

2,5

说明:以位置2和5作为分割点,将字符串分割为ac,bb,ca三个子串,每一个的子串权重都为196,输出为:2,5

示例二:

输入

abcabc

输出

0,0

说明:找不到符合条件的分割点,输出为0,0

示例三:

输入

abzba

输出

0,0

先看结果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

通过以下步骤来实现:

  1. 读取输入
    • 读取一个字符串。
  2. 计算每个字符的ASCII值之和
    • 计算整个字符串的ASCII值之和。
  3. 寻找分割点
    • 遍历所有可能的分割点,检查是否满足条件。
  4. 输出结果
    • 如果找到符合条件的分割点,输出分割点的下标;否则输出 0,0

下面是一个具体的Java代码实现:

java">import java.util.Scanner;public class StringSplitter {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// Read the input stringString input = scanner.nextLine();// Calculate the total ASCII sum of the stringint totalSum = 0;for (char c : input.toCharArray()) {totalSum += c;}// Check if the total sum is divisible by 3if (totalSum % 3 != 0) {System.out.println("0,0");return;}int targetSum = totalSum / 3;int currentSum = 0;int firstIndex = -1;int secondIndex = -1;// Iterate through the string to find the split pointsfor (int i = 0; i < input.length() - 1; i++) {currentSum += input.charAt(i);// Check if we have found the first split pointif (currentSum == targetSum && firstIndex == -1) {firstIndex = i;} else if (currentSum == 2 * targetSum && secondIndex == -1) {secondIndex = i;}}// Check if both split points are foundif (firstIndex != -1 && secondIndex != -1) {System.out.println(firstIndex + "," + secondIndex);} else {System.out.println("0,0");}}
}

解释

  1. 读取输入

    • 使用 Scanner 类从标准输入读取字符串。
  2. 计算每个字符的ASCII值之和

    • 遍历字符串中的每个字符,累加其ASCII值。
  3. 寻找分割点

    • 计算目标和 targetSum,即总和除以3。
    • 遍历字符串,累加当前和 currentSum
    • currentSum 等于 targetSum 时,记录第一个分割点。
    • currentSum 等于 2 * targetSum 时,记录第二个分割点。
  4. 输出结果

    • 如果找到了两个分割点,输出它们的下标(从0开始)。
    • 否则,输出 0,0

示例运行

假设输入为:

abcbbbacb

程序将输出:

2,5

在这里插入图片描述


http://www.ppmy.cn/ops/150714.html

相关文章

快速、可靠且高性价比的定制IP模式提升芯片设计公司竞争力

作者&#xff1a;Karthik Gopal&#xff0c;SmartDV Technologies亚洲区总经理 智权半导体科技&#xff08;厦门&#xff09;有限公司总经理 无论是在出货量巨大的消费电子市场&#xff0c;还是针对特定应用的细分芯片市场&#xff0c;差异化芯片设计带来的定制化需求也在芯片…

淘宝 URL 采集商品详情数据及开发

一、通过淘宝开放平台&#xff08;如果有资质&#xff09; 注册成为淘宝开发者 访问淘宝开放平台官方网站&#xff0c;按照要求填写开发者信息&#xff0c;包括企业或个人身份验证等步骤。这一步是为了获取合法的 API 使用权限。 了解商品详情 API 淘宝开放平台提供了一系列…

高通骁龙8 Elite 2性能综合测评

骁龙8 Elite 2采用台积电N3P 3nm工艺制程&#xff0c;与N3E相比&#xff0c;在相同功耗下性能提升约4%&#xff0c;相同时钟频率下功耗降低约9%&#xff0c;晶体管密度提高4%。这使得芯片在性能和能效方面取得了较好的平衡&#xff0c;为手机的续航和长时间高性能运行提供了有力…

浅谈计算机网络02 | SDN控制平面

计算机网络控制平面 一、现代计算机网络控制平面概述1.1 与数据平面、管理平面的关系1.2 控制平面的发展历程 二、控制平面的关键技术剖析2.1 网络层协议2.1.1 OSPF协议2.1.2 BGP协议 2.2 SDN控制平面技术2.2.1 SDN架构与原理2.2.2 OpenFlow协议2.2.3 SDN控制器 一、现代计算机…

平滑算法 效果比较

目录 高斯平滑 效果对比 移动平均效果比较: 高斯平滑 效果对比 右边两个参数是1.5 2 代码: smooth_demo.py import numpy as np import cv2 from scipy.ndimage import gaussian_filter1ddef gaussian_smooth_array(arr, sigma):smoothed_arr = gaussian_filter1d(arr, s…

HTTP 常用方法解析

一、引言 在当今互联网时代&#xff0c;HTTP协议无疑是网络通信的基石&#xff0c;它就像一座桥梁&#xff0c;连接着客户端与服务器&#xff0c;使得信息能够在万维网中自由穿梭。无论是日常使用的网页浏览&#xff0c;还是手机上各类APP的数据交互&#xff0c;HTTP协议都在背…

【MySQL】mysql数据目录

目录 1、背景2、版本3、数据目录4、总结 1、背景 安装mysql之后&#xff0c;在安装目录下会有一个data目录&#xff0c;我们创建的数据库、创建的表、插入的数据都是存储在这个目录中&#xff0c;可以大概了解一下这个目录下是怎么存储数据的。 2、版本 mysql> status --…

了解linux中的“of_property_read_u32()”

of_property_read_u32(node, "post-pwm-on-delay-ms",&data->post_pwm_on_delay); /*根据"post-pwm-on-delay-ms"&#xff0c;从属性中查找并读取一个32位整数*/ /*读到一个32位整数,保存到data->post_pwm_on_delay中*/ of_property_read_u32…