#java #roman-numerals
Вопрос:
Я практикуюсь в сложении римских цифр на Java. основываясь на правилах исключения вычитающей нотации, объединения, а затем группировки в эквиваленты с более высоким значением, вот как будет выглядеть «IV» «IV» :
- «IV» «IV»
- «IIII» «IIII»
- «ИИИИИИИ»
- «VIII» (преобразование 5 I «IIIII» в «V»)
Я использую приведенный ниже код, чтобы сгруппировать 8 I в «IIIII» и «III». Затем я могу преобразовать «IIIII» в «V» с помощью a Map
(не показано). Может ли приведенный ниже код группировки быть написан с использованием Stream
методов?
private String[] group(String sortedRawSum) {
List<String> groupedChars = new ArrayList<>();
int i=0;
while (i 5 < sortedRawSum.length()) {
if ( sortedRawSum.substring(i, i 5).equals("IIIII") ) {
groupedChars.add("IIIII");
i = 5;
continue;
}
i ;
}
if (i < sortedRawSum.length()) {
groupedChars.add(sortedRawSum.substring(i));
}
return groupedChars.toArray(new String[0]);
}
Комментарии:
1. Гарантируется ли, что параметр
sortedRawSum
-содержит толькоI
s?2. если я смогу понять только
I
s, я думал, что смогу адаптировать его, чтобы он был более общим?