Мой наверно первый вопрос по задаче вообще за все время. 19 уровень просто капец! Итоговые задачи максимально не понятные за все время. Скажите, дальше еще хуже?
Итак, прежде чем задать вопрос, перекопал почти все вопросы по теме ранее. Примерно схожих решений не нашел. Регулярку не использовал, попробовал решить через StringBuilder и replace. Х.з. почему, просто понравилось так. И я так понял никто таким путем не шел до меня ранее.
Тест из задания проходит. Скин прикрепляю. На строке 58 пробовал System.out.println(lineSB.toString()); Пофиг.
Из словаря map всталяет данные на 52 строке. lineSB.replace(index, index + s.length(), map.get(digit)); (Выделил, подчеркнул). Я чего не понял или лыжи не едут?
Дайте плиз пример для теста, который не пройдет мой код, я в дебагере может пойму где ошибка.
Ну или подскажите куда смотреть, что бы прошло валидацию.
package com.javarush.task.task19.task1924;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/*
Замена чисел
*/
public class Solution {
public static Map<Integer, String> map = new HashMap<Integer, String>();
static {
map.put(0, "ноль");
map.put(1, "один");
map.put(2, "два");
map.put(3, "три");
map.put(4, "четыре");
map.put(5, "пять");
map.put(6, "шесть");
map.put(7, "семь");
map.put(8, "восемь");
map.put(9, "девять");
map.put(10, "десять");
map.put(11, "одиннадцать");
map.put(12, "двенадцать");
}
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String fileName = bufferedReader.readLine();
bufferedReader.close();
BufferedReader fileReader = new BufferedReader(new FileReader(fileName));
String line;
while ((line = fileReader.readLine()) != null) {
String[] lineArr = line.split(" ");
StringBuilder lineSB = new StringBuilder(line);
int index = 0;
for (String s : lineArr) {
try {
int digit = Integer.parseInt(s);
if (map.containsKey(digit)) {
index = lineSB.indexOf(s, index);
lineSB.replace(index, index + s.length(), map.get(digit));
}
}
catch (NumberFormatException ignored) {
}
}
System.out.println(lineSB);
}
fileReader.close();
}
}
indexOf()
?