给定非空字符串在s,将该字符串分割成一些子串,使每个子串的ASCII码值的和均为水仙花数。
1、若分割不成功则返回 0
2、若分割成功且分割结果不唯一则返回-1
3、若分割成功且分割结果唯一,则返回分割后的子串数目
备注:“水仙花数”是指一个三位数,每位上数字的立方和等于该数字本身,如 371是“水仙花数”,因为: 371=33+73+1^3

package com.OD.test;import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;public class test3 {/*** 给定非空字符串在s,将该字符串分割成一些子串,使每个子串的ASCII码值的和均为水仙花数。* 1、若分割不成功则返回 0* 2、若分割成功且分割结果不唯一则返回-1* 3、若分割成功且分割结果唯一,则返回分割后的子串数目* 备注:“水仙花数”是指一个三位数,每位上数字的立方和等于该数字本身,如 371是“水仙花数”,因为:371=3^3+7^3+1^3。* @param args*/public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String line = scanner.nextLine();// 超过长度200,返回分割不成功if (line.length() > 200) {System.out.println(0);}StringBuilder sb = new StringBuilder();ArrayList<String> strings = new ArrayList<>();char[] chars = line.toCharArray();System.out.println("chars:"+ Arrays.toString(chars));digui(chars, sb, strings, 0);// 分割成功且分割结果不唯一则返回-1if (strings.size() > 1) {System.out.println(strings);System.out.println(-1);}// 分割结果唯一打印分割的子串个数if (strings.size() == 1) {System.out.println(strings);System.out.println(strings.get(0).split(" ").length);}// 分割不成功则返回 0if (strings.size() == 0) {System.out.println(0);}}public static void digui(char[] chars, StringBuilder sb, ArrayList<String> strings, int startIndex) {int num = 0;StringBuilder sb_temp = new StringBuilder();for (int i = startIndex; i < chars.length; i++) {char aChar = chars[i];num += aChar;sb_temp.append(aChar);if (!isNar(num)) {continue;}StringBuilder sb_copy = new StringBuilder(sb);sb_copy.append(sb_temp).append(" ");if (i == chars.length - 1) {strings.add(sb_copy.toString().trim());return;}digui(chars, sb_copy, strings, i + 1);}}// 判断是否是水仙花数public static boolean isNar(int num) {if (num < 100 || num > 999) return false;int bai = num / 100;int shi = (num % 100) / 10;int ge = (num % 100) % 10;// Math.pow(底数x,指数y)int v = (int) (Math.pow(bai, 3) + Math.pow(shi, 3) + Math.pow(ge, 3));return v == num;}
}

原链接:https://www.peiluming.com/article/63

分割字符串(每个子串的ASCII码值的和均为水仙花数)相关推荐

  1. 转义序列字符(\0,\n,\r,\t,\v,\a,\f,\b,\\,\‘,\“,\?)详解,转义字符对应的全称,输出结果和对应的ASCII码值详解;

    文章目录 前言 转义序列字符(Escape Sequence Character): 一.\0:空字符 二.\n:换行符 三.\r:回车符 四.\t:水平制表符 五.\v:垂直制表符 六.\a:响铃 ...

  2. python面试题-输入一个由n个大小写字母组成的字符,按Ascii码值从小到大排序,查找字符串中第k个最小Ascii码值的字母

    题目: 输入一个由n个大小写字母组成的字符,按Ascii码值从小到大排序,查找字符串中第k个最小Ascii码值的字母(k>=1) 输入要求: 第一行输入大小写组成的字符串 第二行输入k, k必须 ...

  3. ASCII码值与字符的转换

    在计算机中,字符是以ASCII码值存放的,那么字符与ASCII是如何转换的呢, 只要找到要转换的字符的码值,再定义相应的变量就可以了 代码如下: #include<stdio.h> int ...

  4. 如何将ASCII码值转换为字符

    其实很简单啦- int b; cin>>b;//b为那个ASCII码值 char a=b; 就成功的将你输入的那个码值转换成字符串了,,所以有时候别想太多,从简才是真理.

  5. ASCII码值之和的差

    输入两个字符串s1和s2(每个串占一行,以换行回车符结束),计算两个字符串的所有字符的ASCII码值之和的差. 输入格式 两行字符,第行字符不超过80个字符 输出格式 ASCII码值之和的差 输入样例 ...

  6. Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过C语言解决。

    描述 Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好.请大家给Lily帮忙,通过C语言解决. 知识点 字符串 运行时间限制 0M ...

  7. ASCII码值与对应字符的转换

    字符数据在计算机中主要是以ASCII码值存储的,那么我们怎么对字符和ASCII进行转换呢,其实我们只要知道要转换的字符和其对应的码值就行了 代码如下: #include<stdio.h> ...

  8. 18057 ASCII码值之和的差

    18057 ASCII码值之和的差 时间限制:1000MS 代码长度限制:10KB 提交次数:0 通过次数:0 题型: 编程题 语言: G++;GCC;VC Description 输入两个字符串s1 ...

  9. 输入一个字符串,用子函数完成在字符串中找出ACSII码值最大的字符,将其放在第一个位置,并将该字符前的所有字符向后顺序移动

    <程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p143 7.1.2 上级实训内容 [实训内容9]输入一个字符串,用子函数完成在字符串中找出ACSII码 ...

最新文章

  1. latex中的\label标签的作用
  2. Windows XP Service Pack 3 RC2 简体中文版发布
  3. 云计算究竟能帮你具体做些什么事?
  4. Wi-Fi速度慢的十个原因以及解决办法
  5. 建立能够持续请求的CS网络程序
  6. 以管理员权限来进行解压操作
  7. 中国城中村改造建设前景规划及投融资模式分析报告2022年版
  8. linux网络相关常见问题
  9. 【python】python第二周作业
  10. Oracle 中间件云服务器系统 ExaLogic X2 - 2 和 T3-1B概述
  11. Luogu P1073 最优贸易(NOIp提高组 2009)分层图最短路写法
  12. .net remoting与web service的区别
  13. Script to Setup NTP/DNS/Powerpolicy for new server
  14. 版式设计优秀作品欣赏_垂直版式的垂直作品设计探索
  15. 总结命令行05:Kafka
  16. 关于AD中如何绘制原理图及其封装
  17. matlab中princ,主成分分析matlab源程序代码(最新整理)
  18. IOCTL函数的实现
  19. 能不能算是PLSQL Developer的锅?
  20. 利用OpenCV进行动态画椭圆,直线,矩形

热门文章

  1. ArcGIS 批量栅格转要素工具——批量栅格转面
  2. python合并ts文件教程
  3. matlab的交通灯信号识别,交通灯识别系统.docx
  4. 《摩诃般若波罗蜜多心经》新译 何新 译
  5. 基于django的微信小程序搭建
  6. Python与STM32
  7. det曲线_Winform中设置ZedGraph的曲线符号Symbol以及对应关系
  8. 20221122非累加的m3u8的ts切片列表的补全步骤
  9. livereload使用方法
  10. CAD中解决打印图纸模糊而且有的字体深浅不一的方法