在java中,如何检查给定字符串S中有多少长度为n的子字符串?

在java中,如何检查给定字符串S中有多少长度为n的子字符串?,java,substring,Java,Substring,我正在写一个程序,在这个程序中,我必须比较给定字符串“s”中包含的所有可能的大小为“k”的子字符串,然后以字典的方式对它们进行排序,这样较小的子字符串是第一个,较大的子字符串是最后一个 示例:s=“serendipia”k=3 应导致[“ser”、“ere”、“ren”、“end”、“ndi”、“dip”、“ipi”、“pia”] 我得到了's'(字符串)和'k'(子字符串的大小),这是我最初想到的: for (int i = 0; i < s.length(); i++){

我正在写一个程序,在这个程序中,我必须比较给定字符串“s”中包含的所有可能的大小为“k”的子字符串,然后以字典的方式对它们进行排序,这样较小的子字符串是第一个,较大的子字符串是最后一个

示例:
s=“serendipia”k=3
应导致
[“ser”、“ere”、“ren”、“end”、“ndi”、“dip”、“ipi”、“pia”]

我得到了's'(字符串)和'k'(子字符串的大小),这是我最初想到的:

for (int i = 0; i < s.length(); i++){
        substringsArray[i] = s.substring(i,i+k); 
        //System.out.format("%s %d %d%n",substringsArray[i], i, s.length());
    }
for(int i=0;i
我认为这会起作用,因为最坏的情况是
'k'==1
,数组中的字母数量将与
s.length()-1
相同。它确实有效,但我得到了一个明显的例外:
IndexOutOfBoundsException

我还尝试使用ArrayList代替数组,这样我可以得到一个动态大小列表,但同样的问题再次出现:我如何知道我必须在字符串上迭代多少次才能不越界

所以我想知道,有没有一种方法/算法可以帮助我计算出给定的“s”和“k”——我的数组的正确大小?

试试这个:

// make sure you don't go beyond the String's length
for (int i = 0; (i+k) <= s.length(); i++){    
    substringsArray[i] = s.substring(i,i+k);
}
//确保不要超出字符串的长度
对于(inti=0;(i+k)请尝试以下方法:

// make sure you don't go beyond the String's length
for (int i = 0; (i+k) <= s.length(); i++){    
    substringsArray[i] = s.substring(i,i+k);
}
//确保不要超出字符串的长度

对于(int i=0;(i+k)
for(int i=0;i
你的问题是s.substring(i,i+k)当你到达字符串的末尾(i=s.length()-1)实际上,它应该是
for(int i=0;i
…我被关了一个。
for(int i=0;i
你的问题是s.substring(i,i+k)当你到达字符串的末尾(i=s.length()-1)实际上,它应该是
for(int i=0;i
…我被一个。那个(i+k)人那个(i+k)