Доступ к значению индекса строки Этот вопрос является частью моего предыдущего вопроса.
Пример 1: Ввод: S = "abcd"
, indexes = [0,2]
, sources = ["a","cd"]
, target = ["eee","ffff"]
Вывод: eeebffff
Объяснение: a
начинается с индекса 0 в S, поэтому его заменяют на eee
.cd
начинается с индекса 2 в S, поэтому он заменяется на ffff
.
Пример 2: Ввод: S = "abcd"
, индексы = [0,2]
, источники = ["ab","ec"]
, цели = ["eee","ffff"]
Вывод: "eeecd" Объяснение: "ab"
начинается с индекса 0 в S, поэтому оно заменяется на "eee"
."ec"
не начинается с индекса 2 в исходном S, поэтому мы ничего не делаем.
public class Q833 {
public static void main(String args[]){
String S="abcd";
int[] indexes = {0, 2};
String[]sources={"ab","cd"};
String[] targets = {"eee", "ffff"};
Solve833 ob833=new Solve833();
System.out.println(ob833.findReplaceString(S,indexes,sources,targets));
}
}
class Solve833{
public String findReplaceString(String S, int[] indexes, String[] sources, String[] targets) {
char[] array = S.toCharArray();
StringBuilder result = new StringBuilder();
int counter = 0;
String s = "";
for (String n:sources)
s+= n;
char[] c = s.toCharArray();
for (int i = 0; i < array.length; i++) {
if(array[indexes[counter]]==c[counter]){
result.append(targets[counter]);
if(counter<=indexes.length) {
counter++;
}
}
else
result.append(array[i]);
}
return result.toString();
}
}
Вывод кода: для 1-го примера
Ожидаемый вывод: Output: "eeebffff"
.
Мой вывод:
Исключение в потоке "main" java.lang.ArrayIndexOutOfBoundsException: 2 в Leetcode.Solve833.findReplaceString (Q833.java: 30) в Leetcode.Q833.main (Q833.java:16)
Вывод кода: 2-й пример
Ожидаемый вывод: "eeecd"
Мой вывод: eeebcd
.Так что здесь ab отсутствует.Как я могу справиться с этим?