gpt4 book ai didi

java - 为什么没有越界异常?

转载 作者:行者123 更新时间:2023-12-01 12:31:49 26 4
gpt4 key购买 nike

我正在研究一个问题,要求返回两个给定字符串包含相同长度的 2 子字符串的位置数。因此,“xxcaazz”和“xxbaaz”得到 3,因为“xx”、“aa”和“az”子字符串出现在两个字符串中的相同位置。据说解决方案如下:

public int stringMatch(String a, String b) {
// Figure which string is shorter.
int len = Math.min(a.length(), b.length());
int count = 0;

// Look at both substrings starting at i
for (int i=0; i<len-1; i++) {
String aSub = a.substring(i, i+2);
String bSub = b.substring(i, i+2);
if (aSub.equals(bSub)) { // Use .equals() with strings
count++;
}
}

return count;
}

我不明白为什么这个解决方案没有越界异常。例如,输入两个长度分别为6和7的字符串,在for循环的最后一次迭代中,i=5。但是对于较小字符串的子字符串,即使字符串的最终索引是 5,给出的参数也将是 (5,7)。在之前的问题中,我似乎在类似的情况下产生了越界异常。为什么不在这里?非常感谢所有帮助。

最佳答案

如果我们假设您使用 Java 进行编码,则在方法 substring(int beginIndex, int endIndex) 中, endIndex是独家的。

From http://docs.oracle.com/javase/8/docs/api/java/lang/String.html#substring-int-int- :

Parameters:

beginIndex - the beginning index, inclusive.

endIndex - the ending index, exclusive.

因此,当您调用最后一个缩进时,i等于 4,因为 i<len-1for健康)状况;所以:

String bSub = b.substring(i, i+2);

=> b.substring(4, 6) => xxba az

如果你想要 StringIndexOutOfBoundsException ,删除 -1在你的for情况。

关于java - 为什么没有越界异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25867154/

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