华为OD机试真题Java实现【水仙花数2】真题+解题思路+代码(20222023)
创始人
2025-05-28 07:23:35
0

水仙花数2

题目

给定非空字符串s,将该字符串分割成一些子串
使每个子串的ASCII码值的和均为水仙花数

  1. 若分割不成功则返回0
  2. 若分割成功且分割结果不唯一 则返回-1
  3. 若分割成功且分割结果唯一 则返回分割后子串的数目

🔥🔥🔥🔥🔥👉👉👉👉👉👉 华为OD机试(Java)真题目录汇总

输入

输入字符串的最大长度为200

输出描述

根据题目中的情况返回响应结果

示例一

输入

abc

输出

0

说明

分割不成功

示例二

输入

f3@d5a8

输出

-1

说明

分割成功但分割结果不唯一
可以分割为两组
一组 f3和@d5a8
另一组 f3@d5和a8

说明

分割不成功

示例三

输入

AXdddF

输出

2

说明

成功分割且分割结果唯一
可以分割为AX(153)dddF(370)两个子串

解题思路

通过输入一个字符串来寻找水仙数。水仙数是指一个三位数,它的各位数字的立方和等于它本身。程序首先定义了一个链表resultLinklist来储存找到的结果,然后定义了一个方法isWaterNum来判断一个数是否为水仙数,又定义了一个方法getStringAsciiSum来计算一个字符串中每个字符对应的ASCII码值之和。接下来是findData方法,它使用递归的方式来寻找符合条件的数。该方法将输入字符串分割成两个子串subStrOne和subStrTwo,并检查这两个子串的ASCII码值之和是否为水仙数。如果都是,则将其加入resultLinklist中;如果只有subStrOne是水仙数,则继续在subStrTwo上调用findData方法;如果都不是,则跳过当前循环。最后,在main方法中读取用户输入的字符串,调用findData方法处理,并输出结果。主要使用的Java集合是LinkedList。知识点包括字符串操作、递归、流程控制语句等。

代码实现

package com.hw.od;import java.util.LinkedList;
import java.util.Scanner;/*** Author: 华为OD联盟(梦想橡皮擦,码莎拉蒂,鸿蒙坚果) Date: 2023/1/6 Time: 19:38 Description:*/public class OdMain {public static LinkedList resultLinklist = new LinkedList<>();public static boolean isWaterNum(int num) {int a = num % 10;int b = num / 10 % 10;int c = num / 100;return a * a * a + b * b * b + c * c * c == num;}public static int getStringAsciiSum(String s) {int result = 0;for (char c : s.toCharArray()) {result += c;}return result;}public static void findData(String values, int number) {String subStrOne;String subStrTwo;for (int j = 1; j < values.length(); ++j) {subStrOne = values.substring(0, j);subStrTwo = values.substring(j);if (isWaterNum(getStringAsciiSum(subStrOne))) {if (isWaterNum(getStringAsciiSum(subStrTwo))) {resultLinklist.add(number);} else {findData(subStrTwo, number++);}}}}public static void main(String[] args) {try {int count = 2;Scanner scan = new Scanner(System.in);String value = scan.nextLine();if (value == null || value.length() == 0) {System.out.println("input error");return;}findData(value, count);int result = 0;if (1 < resultLinklist.size()) {result = -1;} else if (1 == resultLinklist.size() ) {result = resultLinklist.get(0);}System.out.println(result);} catch (Exception e) {e.printStackTrace();System.out.println("input error");}}
}

代码运行结果

AXdddF
2

版权说明

试题来源:华为 OD 联盟整理收集

题解:解题思路代码 为原创内容,该部分版权由 OD 联盟共同拥有,并授权组内成员发布。

目标:👉 助你解开所有JAVA华为OD机试题


🔥系列专栏

  • 华为OD机试(JAVA)真题目录汇总
  • 华为OD机试(Python)真题目录汇总
  • 华为OD机试(C++)真题目录汇总
  • 华为OD机试(JavaScript)真题目录汇总

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...