我为什么要在我的 for 循环中< a.length()-1



问题是:给定两个字符串,返回它们包含长度为2的相同子字符串的位置数。

我写的代码是有效的,但我的问题是为什么我必须在第3行加上负1,这就是这一部分:I<a.长度()-1

(我知道这与我使用(I,I+2)有关)

public int stringMatch(String a, String b) {

int count = 0;
if (a.length() < b.length()) {
for (int i=0; i<a.length()-1; i++) {
if (a.substring(i,i+2).equals(b.substring(i,i+2))) {
count++;
}
}
} else {
for (int i=0; i<b.length()-1; i++) {
if (b.substring(i,i+2).equals(a.substring(i,i+2))) {
count++;
}
}
}
return count;
}

由于子字符串从索引i(包含)到i+2(排除),为了不走出子字符串,循环需要在之前完成1步。

String.length()函数返回字符串的长度,但当您访问字符时,您会使用索引来访问它。这就是为什么你必须做"-1〃;。

例如:

String s = "Hello";

长度为5。索引介于0到4之间。

相关内容

最新更新