给定非空字符串s,将该字符串分割成一些子串
使每个子串的ASCII码值的和均为水仙花数
🔥🔥🔥🔥🔥👉👉👉👉👉👉 华为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机试题