Java中字符串置换的递归方法

问题描述 投票:0回答:1

我正在尝试编写一个递归程序:

public static List<String> method(String string, int n, List<String> sub)

计算长度为n的所有字符串,这些字符串可以由string中给出的所有字符组成,但是sub中列出的所有字符串均不允许显示为子字符串。例如,从string = 'CDE'构造的所有长度为3的字符串都不含substring = ['CE', 'CC'],则为['CDC', 'CDD', 'CDE', 'DCD', 'DDC', 'DDD', 'DDE', 'DEC', 'DED', 'DEE', 'ECD', EDC', 'EDD', 'EDE', 'EEC', 'EED', 'EEE']

这是我到目前为止编写的程序,但尚未实现sub的限制,它仅计算string的排列。

私有方法:

private static void method(String string, int n, List<String> sub, String soFar, List<String> result)

应该保留递归,soFar应该是到目前为止生成的部分字符串,result是递归已经看到的字符串列表

    public static void method(String string)
    {
        method(string, "");
    }
    public static void method(String string, String soFar)
    {
        if (string.isEmpty())
        {
            System.err.println(soFar + string);
        }
        else
        {
            for (int i = 0; i < string.length(); i++)
            {
                method(string.substring(0, i) + string.substring(i + 1, string.length()), soFar + string.charAt(i));
            }
        }
    }
java string recursion substring
1个回答
0
投票
有重复
© www.soinside.com 2019 - 2024. All rights reserved.