Пожалуйста, помогите мне определить мои ошибки в этом коде. Я новичок в Java. Извините, если я допустил ошибку. Это один из вопросов java-кодирования. Я получаю сообщение об ошибке Timed Out для некоторых входов типа «xxxyakyyyakzzz». Для некоторых входов, таких как «якпак» и «пакьяк», этот код работает нормально.Может кто-нибудь помочь мне исправить следующий код?
Вопрос: Предположим, что строка "yak" не повезла. С учетом строки верните версию, где все «як» удалены, но «a» может быть любым символом. Строки «як» не будут перекрываться.
public String stringYak(String str) {
String result = "";
int yakIndex = str.indexOf("yak");
if (yakIndex == -1)
return str; //there is no yak
//there is at least one yak
//if there are yaks store their indexes in the arraylist
ArrayList<Integer> yakArray = new ArrayList<Integer>();
int length = str.length();
yakIndex = 0;
while (yakIndex < length - 3) {
yakIndex = str.indexOf("yak", yakIndex);
yakArray.add(yakIndex);
yakIndex += 3;
}//all the yak indexes are stored in the arraylist
//iterate through the arraylist. skip the yaks and get non-yak substrings
for(int i = 0; i < length; i++) {
if (yakArray.contains(i))
i = i + 2;
else
result = result + str.charAt(i);
}
return result;
}
Какая ошибка вы получаете? – Renjith
Поделитесь данными, которые вы дали, и ожидали, и фактический вывод. Таким образом, вам может помочь. –
Почему вы не используете replaceAll для удаления всех 'yak'? – Masudul