У меня есть проблема с этим кодом, в начале он работает хорошо, когда он обнаружен в первый раз, но когда он найден во второй раз, он говорит, что в строке нет похожего символа, я думаю, потому что во второй букве"p" он не понимает, что у него есть другой "p" в начале массива.
Некоторая помощь, чтобы решить это, пожалуйста?!
Спасибо.
Вот мой код
public class DuplicateEncoder {
static String encode(String word){
word = word.toLowerCase();
char[] c = word.toCharArray();
//")"
char close = 41;
//"("
char open = 40;
for (int i = 0; i < c.length; i++) {
int count = 0;
for (int j = 0; j < c.length; j++) {
if(c[i] == c[j]) {
count++;
}
}
if(count > 1){
c[i] = close;
}
else if (count == 1){
c[i] = open;
}
}
String string = new String(c);
return string;
}
}
Вот этот тест
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import org.junit.runners.JUnit4;
public class DuplicateEncoderTest {
@Test
public void test() {
assertEquals(")()())()(()()(",
DuplicateEncoder.encode("Prespecialized"));
assertEquals("))))())))",DuplicateEncoder.encode(" ()( "));
}
}
Вот мой неправильный результат
expected:<)()([))()(()()](> but was:<)()([()()(((((](>