Я понятия не имею, как это помогает вам переводить римские числа в десятичные, но, конечно, это можно упростить!
Для начала, .replace
выполняет эту работу намного лучше ('replaceAll
- это глупое имя; первый аргумент - регулярное выражение. replace
без всего, также заменяет все и принимает фактическую необработанную строку, что вы хотели - java не нравится нарушение обратной совместимости; глупое название вряд ли будет исправлено).
Во-вторых, «короче» в большинстве случаев бессмысленно. Важными целями при написании кода являются удобочитаемость и гибкость и редко эффективность (производительность); короче само по себе не имеет отношения к цели.
Вот альтернативный вариант; это значительно эффективнее для больших струн. Для маленьких струн это 2020 год, затраченное время округляется до 0.
private static final String LETTERS = "IVXLCDM";
char[] cs = s.toCharArray();
for (int i = 0; i < cs.length; i++) {
cs[i] = 'a' + LETTERS.indexOf(cs[i]);
}
String code = new String(cs);