如何解决将所有字符组合插入Java中的字符串中
我想通过这两个列表:
int[] nums = {1,2,3,4,5};
和:
String[] signs = {"+","-","/","*","^"}
并产生如下输出: 1 + 2 - 3 * 4 + 5
等等,每个可能的组合,保持相同的顺序,但嵌套循环在任何一种方式都不起作用,所以我想不出任何方法来做到这一点.我最终也想评估结果,但现在我的目标只是打印组合。
解决方法
假设
- 不考虑一元
-
- result 将作为字符串返回。需要后缀转换来评估
解决方案
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
问题将有助于我们提出解决方案的基本版本
- 第一个数字可以认为是根节点
- 从这个节点到下一个数字(另一个节点)为每个符号添加一条边
- 移动到新节点并重复向下一个节点添加不同的边。
- 然后从根进行 DFS 遍历并记录从根到叶的所有路径。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。