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

字符串划分

题目描述

给定一个小写字母组成的字符串s,请找出字符串中两个不同位置的字符作为分割点,使得字符串分成的三个连续子串且子串权重相等,注意子串不包含分割点。
若能找到满足条件的两个分割点,请输出这两个分割点在字符串中的位置下标,若不能找到满足条件的分割点请返回0,0。

子串权重计算方式为:子串所有字符的ASCII码数值之和。

输入描述:

输入为一个字符串,字符串由a~z,26个小写字符组成,5 <= 字符串长度 <= 200。

输出描述:

输出为两个分割点在字符串中的位置下标,以逗号分隔

补充说明:

只考虑唯一解,不存在一个输入多种输出解的情况

收起

示例1

输入:

acdbbbca

输出:

2,5

说明:

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

示例2

输入:

abcabc

输出:

0,0

说明:

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

题目解析

解题思路

使用贪心算法,遍历不同的切分点,将数据切分成三块
注意切分点的位置即可:
切点i:从1开始,到length-4
切点j:从i+2开始,到length-2

java实现

package com.HW;/*** @ClassName : TstrCutWeight* @Author : kele* @Date: 2023/10/24 22:01* @Description :字符串划分*/
public class TstrCutWeight {public static void main(String[] args) {handle("acdbbbca");}public static void handle(String str) {char[] chars = str.toCharArray();for (int i = 1; i < chars.length - 3; i++) {for (int j = i + 2; j < chars.length - 1; j++) {String s1 = str.substring(0, i);String s2 = str.substring(i + 1, j);String s3 = str.substring(j + 1, chars.length);if (Weight(s1) == Weight(s2) && Weight(s2) == Weight(s3)) {System.out.println(i + "," + (j));return;}}}System.out.println("0,0");}public static int Weight(String str) {int sum = 0;for (char c : str.toCharArray()) {sum += (int) c;}return sum;}
}
http://www.lryc.cn/news/204908.html

相关文章:

  • ImportError: /lib64/libstdc++.so.6: version `CXXABI_1.3.9‘ not found的解决方法
  • 华为云全新上线Serverless应用中心,支持一键构建文生图应用
  • scrapy的安装和使用
  • Kotlin中的异常处理
  • [Ubuntu 18.04] 搭建文件夹共享之Samba服务器
  • 设计模式-装饰器模式
  • 【Vs code调试C++】
  • 使用 C++创建一个简易的数据库管理系统 (DBMS)
  • 简单了解一下:NodeJS的WebSocket网络编程
  • 目标检测技术概述
  • 软件设计原则-开闭原则讲解以及代码示例
  • 分类预测 | MATLAB实现SSA-CNN-GRU-Attention数据分类预测(SE注意力机制)
  • LeetCode--180 连续出现的数字
  • 面试算法34:外星语言是否排序
  • 常用docker命令 docker_cmd_sheet
  • 算法进阶——数组中的逆序对
  • hackmyvm之gift
  • 1024,向着“顶尖程序员“迈进
  • Arcgis 数据操作
  • YoloV7改进策略:SwiftFormer,全网首发,独家改进的高效加性注意力用于实时移动视觉应用的模型,重构YoloV7
  • Day07 Stream流递归Map集合Collections可变参数
  • 8.JavaScript-注释
  • 知识分享|分段函数线性化及matlab测试
  • ant target的depends属性
  • 【三维重建】DreamGaussian:高斯splatting的单视图3D内容生成(原理+代码)
  • 如何使用Flutter开发执行操作系统shell命令的工具
  • 西山居 游戏研发工程师实习生 面经
  • YOLOv8训练自己的数据集+改进方法复现
  • 尚硅谷kafka3.0.0
  • 【Andriod】Appium的不同版本(Appium GUI、Appium Desktop、Appium Server )的安装教程