You need to enable JavaScript to run this app. Java中如何向数字序列字符串插入运算符生成全组合表达式
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何向数字序列字符串插入运算符生成全组合表达式

实现逻辑说明

  • 首先明确:长度为5的nums数组,相邻数字之间一共存在4个独立的符号插入空隙,每个空隙可以从signs数组中任选一个运算符,最终总共有5^4=625种不重复的表达式组合
  • 之前嵌套循环写法失效的核心原因:没有按照空隙数量匹配对应的嵌套层数,或是循环层级和空隙的对应关系错位,导致组合遗漏。但硬写固定层数的嵌套复用性极差,数组长度变动后需要重新调整代码结构

可运行实现方案

1. 朴素嵌套循环写法(对应嵌套思路的正确实现)

固定4层循环分别对应4个插入空隙的运算符选择,拼接后直接输出:

int[] nums = {1, 2, 3, 4, 5};
String[] signs = {"+", "-", "/", "*", "^"};

for (int signIdx1 = 0; signIdx1 < signs.length; signIdx1++) {
    for (int signIdx2 = 0; signIdx2 < signs.length; signIdx2++) {
        for (int signIdx3 = 0; signIdx3 < signs.length; signIdx3++) {
            for (int signIdx4 = 0; signIdx4 < signs.length; signIdx4++) {
                String expression = nums[0] + " " + signs[signIdx1] + " " +
                                    nums[1] + " " + signs[signIdx2] + " " +
                                    nums[2] + " " + signs[signIdx3] + " " +
                                    nums[3] + " " + signs[signIdx4] + " " +
                                    nums[4];
                System.out.println(expression);
            }
        }
    }
}

这种写法仅适用于nums长度固定为5的场景,灵活性较差。

2. 通用递归实现(适配任意长度的数字数组)

通过递归遍历每一个插入空隙,为每个空隙枚举所有可选运算符,当所有空隙都完成符号选择时输出最终表达式,不需要根据数组长度手动调整嵌套层数:

public class ExpressionGenerator {
    public static void main(String[] args) {
        int[] nums = {1, 2, 3, 4, 5};
        String[] signs = {"+", "-", "/", "*", "^"};
        // 从第一个空隙开始,初始字符串预存第一个数字
        buildExpression(nums, signs, 0, String.valueOf(nums[0]));
    }

    private static void buildExpression(int[] nums, String[] signs, int currentGap, String prefixExpr) {
        // 所有空隙的符号都选择完成,输出最终表达式
        if (currentGap == nums.length - 1) {
            System.out.println(prefixExpr);
            return;
        }
        // 为当前空隙遍历所有可选运算符
        for (String sign : signs) {
            String newPrefix = prefixExpr + " " + sign + " " + nums[currentGap + 1];
            // 递归处理下一个空隙
            buildExpression(nums, signs, currentGap + 1, newPrefix);
        }
    }
}

两种方案生成的表达式格式完全符合要求,均为带空格分隔的标准形式,不会出现元素顺序错乱的问题。


内容的提问来源于stack exchange,提问作者OctopuSS7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.06 05:06:07