在java中,如何检查给定字符串S中有多少长度为n的子字符串?
我正在写一个程序,在这个程序中,我必须比较给定字符串“s”中包含的所有可能的大小为“k”的子字符串,然后以字典的方式对它们进行排序,这样较小的子字符串是第一个,较大的子字符串是最后一个 示例:在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=“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)