java 中使用数组的前缀
Prefixes using array in java
我正在编写一种方法,该方法将一个整数数组和 returns 另一个字符串数组作为输入,每个字符串表示输入数组的一个非空前缀。例如,如果输入
数组是:
<3, 1, 4>
那么输出或返回的字符串值数组应该是:
<[3]", "[3, 1]", "[3, 1, 4]">
我的代码中有一个我似乎找不到的错误
public static String[] getAllPrefixes(int[] numbers) {
String[] result = null;
String[] arr = new String[numbers.length];
String seq = "" + numbers[0];
for (int i = 0; i < numbers.length; i++) {
arr [i] = "[" + seq + "]";
seq += ", " + numbers [i + 1];
}
result = arr;
return result;
}
您必须得到 ArrayIndexOutOfBoundException
,这是因为 seq += ", " + numbers[i + 1]
行。
例如,假设数字数组的长度为 3,那么你的 for 循环将 运行 直到 i=2
在这种情况下,你的 numbers[i+1]
将是 numbers[3]
,它不存在并且它会给出一个例外。
你的代码有一些问题
这一行seq += ", " + numbers [i + 1];
当循环在最后一项时i+1
会超出索引
当您初始化 seq 时,您将第一项添加到数组中,因此在您的循环中您应该忽略此项并从 i = 1 开始,您还应该将此项添加到 arr 数组中,并且在您的循环中您应该更新req 先添加到 arr 所以最后的代码会像这样
public static String[] getAllPrefixes(int[] numbers) {
String[] result = new String[numbers.length];
String seq = "" + numbers[0];
result[0] = "[" + seq + "]";
for (int i = 1; i < numbers.length; i++) {
seq += ", " + numbers[i];
result[i] = "[" + seq + "]";
}
return result;
}
您还可以使用字符串的 StringBuilder 实例进行追加,代码将类似于
public static String[] getAllPrefixes(int[] numbers) {
String[] result = new String[numbers.length];
StringBuilder seq = new StringBuilder("" + numbers[0]);
result[0] = "[" + seq + "]";
for (int i = 1; i < numbers.length; i++) {
seq.append(", ").append(numbers[i]);
result[i] = "[" + seq + "]";
}
return result;
}
注意:搜索字符串与 StringBuilder
我正在编写一种方法,该方法将一个整数数组和 returns 另一个字符串数组作为输入,每个字符串表示输入数组的一个非空前缀。例如,如果输入 数组是:
<3, 1, 4>
那么输出或返回的字符串值数组应该是:
<[3]", "[3, 1]", "[3, 1, 4]">
我的代码中有一个我似乎找不到的错误
public static String[] getAllPrefixes(int[] numbers) {
String[] result = null;
String[] arr = new String[numbers.length];
String seq = "" + numbers[0];
for (int i = 0; i < numbers.length; i++) {
arr [i] = "[" + seq + "]";
seq += ", " + numbers [i + 1];
}
result = arr;
return result;
}
您必须得到 ArrayIndexOutOfBoundException
,这是因为 seq += ", " + numbers[i + 1]
行。
例如,假设数字数组的长度为 3,那么你的 for 循环将 运行 直到 i=2
在这种情况下,你的 numbers[i+1]
将是 numbers[3]
,它不存在并且它会给出一个例外。
你的代码有一些问题
这一行seq += ", " + numbers [i + 1];
当循环在最后一项时i+1
会超出索引
当您初始化 seq 时,您将第一项添加到数组中,因此在您的循环中您应该忽略此项并从 i = 1 开始,您还应该将此项添加到 arr 数组中,并且在您的循环中您应该更新req 先添加到 arr 所以最后的代码会像这样
public static String[] getAllPrefixes(int[] numbers) {
String[] result = new String[numbers.length];
String seq = "" + numbers[0];
result[0] = "[" + seq + "]";
for (int i = 1; i < numbers.length; i++) {
seq += ", " + numbers[i];
result[i] = "[" + seq + "]";
}
return result;
}
您还可以使用字符串的 StringBuilder 实例进行追加,代码将类似于
public static String[] getAllPrefixes(int[] numbers) {
String[] result = new String[numbers.length];
StringBuilder seq = new StringBuilder("" + numbers[0]);
result[0] = "[" + seq + "]";
for (int i = 1; i < numbers.length; i++) {
seq.append(", ").append(numbers[i]);
result[i] = "[" + seq + "]";
}
return result;
}
注意:搜索字符串与 StringBuilder