gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 02:17:16 25 4
gpt4 key购买 nike

我正在编写一个程序,我必须比较给定字符串“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 插入数组,以便获得动态大小列表,但同样的问题再次出现:我如何知道必须在不超出范围的情况下迭代字符串多少次?

所以我想知道,有没有一种方法/算法可以帮助我找出给定的“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);
}

DEMO

关于java - 在java中,如何检查给定字符串S中有多少个长度为n的子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49133338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com