1317-将整数转换为两个无零整数的和

题目描述

「无零整数」是十进制表示中 不含任何 0 的正整数。

给你一个整数 n,请你返回一个 由两个整数组成的列表 [a, b],满足:

  • ab 都是无零整数
  • a + b = n

题目数据保证至少有一个有效的解决方案。

如果存在多个有效解决方案,你可以返回其中任意一个。

示例 1:

输入:n = 2
输出:[1,1]
解释:a = 1, b = 1。a + b = n 并且 a 和 b 的十进制表示形式都不包含任何 0。

示例 2:

输入:n = 11
输出:[2,9]

示例 3:

输入:n = 10000
输出:[1,9999]

示例 4:

输入:n = 69
输出:[1,68]

示例 5:

输入:n = 1010
输出:[11,999]

提示:

  • 2 <= n <= 104

题解

由于题目中给出的 n 的范围 [2,10000] 较小,因此我们可以直接在 [1,n) 的范围内枚举 A,并通过 n−A 得到 B,再判断 A 和 B 是否均不包含 0 即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class LeetCode1317 {

public static int[] getNoZeroIntegers(int n) {
for (int A = 1; A < n; ++A) {
int B = n - A;
if (!String.valueOf(A).contains("0") && !String.valueOf(B).contains("0")) {
return new int[]{A, B};
}
}
return new int[0];
}

public static void main(String[] args) {
int[] result = getNoZeroIntegers(101);
System.out.println(result[0] + " " + result[1]);
}

}