如何打印出字符串的所有子串?

时间:2016-11-16 05:43:53

标签: java loops substring

我四处搜索,无法在任何地方找到此问题 我花了一些时间试图让它与两个循环一起工作,但不能。我会对任何更短,更优雅的东西感兴趣。这是一个练习,但不是一个家庭作业问题,因为标题说我应该保持简单,即没有数组/列表/哈希等。

到目前为止我的工作:

    String str = "string";
    String subString;
    int k = 1;

    while (k <= str.length()) {

        for (int i = 0; i < str.length(); i++) {

            for (int j = i+1; j <= str.length(); j++) {

                subString = str.substring(i,j);

                if (subString.length()==k) {System.out.println(subString);}

            }               
        }

        k++;

    }

3 个答案:

答案 0 :(得分:4)

您只需要2个嵌套循环,而不是3个。您不需要同时使用kj

String str = "string";
for (int i = 0; i < str.length(); i++) {
    for (int j = i + 1; j <= str.length(); j++) {
        System.out.println(str.substring(i, j));
    }               
}

输出:

s
st
str
stri
strin
string
t
tr
tri
trin
tring
r
ri
rin
ring
i
in
ing
n
ng
g

答案 1 :(得分:2)

每次都不需要3个循环并检查子字符串大小: Demo:

for (int i = 0; i < str.length(); i++) {
        for (int k = 1; k+i <= str.length(); k++) {
            subString = str.substring(i,k+i);
            System.out.println(subString);
        }               
}

答案 2 :(得分:1)

我看到了几个类似的答案,但是这个答案应该与原始的3循环版本具有相同的输出:

{{1}}