Было бы заманчиво использовать .replace()
, но если вы замените )
на (
, а затем (
на )
, вы получите все )
. Вместо этого переберите строку и используйте stringbuilder для построения вашей строки.
String swapParens(String s) {
StringBuilder sb = new StringBuilder();
sb.ensureCapacity(s.length()); // preallocate to prevent resizing
for(int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
switch(c) {
case ')': sb.append('('); break;
case '(': sb.append(')'); break;
default: sb.append(c);
}
}
return sb.toString();
}
Я знаю, что вы могли бы поместить что-то в качестве заполнителя для замены, но если бы оно уже существовало в вашей строке, у вас была бы большая проблема.
Попробуйте использовать "xxx" в качестве строки подкачки. Если ваша строка была «abcx (yz)», и вы заменили (на xxx, вы в конечном итоге на «abcxxxyz)», затем вы заменили) на (так что у вас есть «abcxxxxyz (». Затем вы заменяете xxx на), чтобы вы имели » abc) xyz (". Конечно, не круто!