我可以将这个双变量 for 循环拆分为两个嵌套循环吗?
Can I split this two-variable for loop into two nested loops?
我想知道给定的 for
循环,我觉得它很奇怪:
for (int i = 0, j = s.length - 1; i < j; i++, j--)
到目前为止,我使用的是带有一个变量的 for 循环。但是在这个例子中,一个循环中有两个变量。
我可以将 for
循环分成两个嵌套循环吗?
for (int j = 0; j < s.length - 1; j--) {
for (int i = 0; i < j; i++) {
}
}
转换错误,正确的是:
int j = s.length - 1;
for (int i = 0; i < j; i++) {
// inside logic
j--;
}
没有
原作是这样的:
sssssss
i j
sssssss
i j
sssssss
i j
sssssss
i
j
它有例如 (s.length)/2 次迭代。并用 i 迭代一半,用 j 迭代另一半。
建议的替代方案是 2D,例如 (s.length*s.length)/2 次迭代(假设 j++
而不是损坏的 j--
) .它覆盖了一个三角形。
sssssss
j
ij
iij
iiij
iiiij
iiiiij
iiiiiij
我想知道给定的 for
循环,我觉得它很奇怪:
for (int i = 0, j = s.length - 1; i < j; i++, j--)
到目前为止,我使用的是带有一个变量的 for 循环。但是在这个例子中,一个循环中有两个变量。
我可以将 for
循环分成两个嵌套循环吗?
for (int j = 0; j < s.length - 1; j--) {
for (int i = 0; i < j; i++) {
}
}
转换错误,正确的是:
int j = s.length - 1;
for (int i = 0; i < j; i++) {
// inside logic
j--;
}
没有
原作是这样的:
sssssss
i j
sssssss
i j
sssssss
i j
sssssss
i
j
它有例如 (s.length)/2 次迭代。并用 i 迭代一半,用 j 迭代另一半。
建议的替代方案是 2D,例如 (s.length*s.length)/2 次迭代(假设 j++
而不是损坏的 j--
) .它覆盖了一个三角形。
sssssss
j
ij
iij
iiij
iiiij
iiiiij
iiiiiij