我有一个学校作业,我需要做一个函数,接受一个字符串和一个字母。然后它复制字符串中的字母并返回它。例如,如果我这样调用函数 System.out.println(duplicate("hello world", "l"));
,它应该输出helllo worlld。但是,当我进行此调用时,代码反而输出hellllo wlorld。这是我的密码:
public static String duplicate(String s, String letter){
String rv = s;
for(int i=0; i<s.length(); i++){
String a = s.substring(i,i+1);
if (letter.compareTo(a) == 0){
rv = rv.substring(0, i) + a + rv.substring(i);
}
}
return rv;
}
3条答案
按热度按时间xhv8bpkk1#
考虑到你所有的限制,这就是我能想到的。
正如注解部分所建议的,stringbuilder是首选的方法
pdsfdshx2#
所以,一个真正快速的案头检查将突出潜在的问题。。。
问题是,“insert”点没有正确更新,您只是继续使用当前的搜索索引,而不是用已经进行的更改的数量来抵消位置。
我个人倾向于使用
StringBuilder
,但既然你不能这么做,一个超简单的方法,不管怎样,都会遵循同样的一般方法,可能看起来像。。。但是,如果不允许这样做,则需要跟踪每个新字符所需的“偏移量”,例如,基于在它之前插入的其他字符数。。。
ifmq2ha23#
如果可以使用indexof,就不需要遍历for循环中的所有字符。