java - 将所有字符组合插入Java中的字符串
问题描述
我想通过这两个列表:
int[] nums = {1, 2, 3, 4, 5};
和:
String[] signs = {"+", "-", "/", "*", "^"}
并使用每个可能的组合产生类似的输出:1 + 2 - 3 * 4 + 5
等等,保持相同的顺序,但是嵌套循环不能正常工作,所以我想不出任何方法来做到这一点。我最终也想评估结果,但现在我的目标只是打印组合。
解决方案
假设
-
不考虑一元- 结果将作为字符串返回。需要后缀转换来评估
解决方案
import java.util.ArrayList;
import java.util.List;
public class Combination {
public static void main(String[] args) {
int[] nums = {1, 2, 3};
String[] signs = {"+", "-", "*"};
List<String> results = new ArrayList<>();
results.add(String.valueOf(nums[0]));
for (int index = 1; index < nums.length; index++) {
final int num = nums[index];
List<String> temp = new ArrayList<>();
for (final String sign : signs) {
for (String result : results) {
temp.add(result + sign + num);
}
}
results = temp;
}
System.out.println(results);
}
}
替代建议
将此问题分析为graph
问题将有助于我们提出解决方案的基本版本
- 第一个数字可以认为是根节点
- 将此节点的每个符号添加一条边到下一个数字(另一个节点)
- 移动到新节点并重复将不同的边添加到下一个节点。
- 然后从 root 进行 DFS 遍历并记录从 root 到叶子的所有路径。
推荐阅读
- c - 如何在没有核心转储的情况下捕获段错误
- html - 在使布局灵活以获取更多内容方面,我做错了什么?
- firebase - 如何从 Cloud Firestore for iOS 应用本地化数据
- c# - 在 Xamarin De Android 平台上,我无法使用 Web Service 在 ListView 中连续列出我的数据
- gnuplot - 如何在 gnuplot 上制作直方图以及如何格式化数据 - c++
- swift - Snapshot.value 在 setValueForKeys 上崩溃
- vba - VBA - 将单元格中的命令发送到 CMD 以运行
- python - docker上的Jupyter在执行时无法自动打开浏览器
- python - 如果数据库连接失败,如何写入文件
- php - 在 PHP 中使用 Curl 进行异步上传 - curl_multi_exec()