В качестве ввода у меня есть объект String, который содержит только '0'.
Пример ввода String word = "00000"
.
Вопрос заключается в том, чтобы преобразовать эту строку в другую строку в качестве вывода.
Преобразование заключается в замене некоторых '0' на '1' в некоторых конкретных позициях, в результате чего каждое '0' смежно по крайней мере с одним '1'.
некоторые примеры:
input | output
0000 0101
00000 01001
000000 010010
0000000 0100101
00000000 01001010
Как мы видим, выходы удовлетворяют условию, каждый '0' смежен хотя бы с одним '1'.
Вторым условием является то, что мы должны использовать минимальное число «1».
После некоторой работы я понял, что мы можем знать минимальное число '1', которое должно заменить значения 0.
Формула представлена методом getMinNumber (String word).
Вот что я сделал.
public class TestUtilities {
public static void main( String[] args ) {
String [] words ={"0000","00000","000000","0000000"} ;
for (String str :words) {
System.out.println(transform(str));
}
}
private static String transform( String word ) {
int min = getMinNumber(word);
//////
//Some processing Here
/////
return "";
}
public static int getMinNumber(String word) {
int min;
if (word.length() % 3 == 0) {
min = word.length() / 3;
} else {
min = (word.length() / 3) + 1;
}
return min;
}
}
Как показано, я оставил часть обработки, потому что не нашел подходящего алгоритма. Обычно я должен заменять один 0 каждые три 0, но это не работает для каждого слова.
Я ищу решение, которое может обработать любое слово.