我正在编写一个程序,我必须比较给定字符串'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());
}
认为这可以用于最坏的情况'k' == 1
,并且我的数组中的字母数量与s.length()-1
一样多。它确实有效但我得到一个明显的例外:IndexOutOfBoundsException
我也尝试使用ArrayList insted一个数组,所以我得到一个动态大小列表,但同样的问题又出现了:我怎么知道有多少次我必须迭代字符串而不超出界限?
所以我想知道,有没有一种方法/算法可以帮助我弄清楚 - 给出's'和'k' - 我的数组的正确大小?
答案 0 :(得分:2)
试试这个:
// 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);
}