java Leetcode 833:字符串替换取决于索引编号
String index value access这个问题是我之前问题的一部分
例1:
输入:S="abcd"
,索引=[0,2]
,源=["a","cd"]
,目标=["eee","ffff"]
输出:eeebffff
说明:a
从S中的索引0开始,因此被eee
替换。
cd
从S中的索引2开始,因此被ffff
替换
例2:
输入:S="abcd"
,索引=[0,2]
,源=["ab","ec"]
,目标=["eee","ffff"]
输出:“eeecd”
说明:"ab"
从S中的索引0开始,因此被"eee"
替换。
"ec"
在原始的S中不是从索引2开始的,所以我们什么也不做
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();
}
}
代码输出:例如第一个示例
预期输出:Output: "eeebffff"
我的输出:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 at Leetcode.Solve833.findReplaceString(Q833.java:30) at Leetcode.Q833.main(Q833.java:16)
代码输出:第二个示例
预期输出:"eeecd"
我的输出:eeebcd
。这里缺了一个b。我该怎么办
# 1 楼答案
你可以这样改变你的方法来打印结果