作者:心动心爱_342 | 来源:互联网 | 2023-06-07 04:51
以下是Google面试问题,有人可以解决或提供寻找答案的逻辑吗?运算符[+,-,*]
输出应该是所有可能生成目标数字的字符串的列表。
Ex1:
Input = 1234
Desired number = 6
Expected Output = [2+4,3+4-1,2*3,1+2+3... etc]
Ex2:
Input = 105
Desired number = 5
Expected Output = [10-5,1*5... etc]
这是为您快速解决的问题。
请检查以下代码。
public static void main(String arg[]) {
String num = "105";
int target = 5;
getValue(num,target);
}
static void check(double sum,double previous,String digits,double target,String expr) {
if (digits.length() == 0) {
if (sum + previous == target) {
System.out.println(expr + " = " + target);
}
} else {
for (int i = 1; i <= digits.length(); i++) {
double current = Double.parseDouble(digits.substring(0,i));
String remaining = digits.substring(i);
check(sum + previous,current,remaining,target,expr + " + " + current);
check(sum,previous * current,expr + " * " + current);
check(sum,previous / current,expr + " / " + current);
check(sum + previous,-current,expr + " - " + current);
}
}
}
static void getValue(String digits,double target) {
for (int i = 1; i <= digits.length(); i++) {
String currentValue = digits.substring(0,i);
check(0,Double.parseDouble(currentValue),digits.substring(i),currentValue);
}
}
输出:
1 * 0.0 + 5.0 = 5.0
1 * 5.0 = 5.0
10-5.0 = 5.0
希望这个例子可以帮助您理解概念。