给定非空字符串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<Integer> 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机试题
联系客服