Есть ли какие-либо средства в стандартных библиотеках Java, которые, учитывая CharSequence, создают обратное в O (1) раз?Обратить строку в Java, в O (1)?
Я предполагаю, что это «легко» реализовать, просто интересно, существует ли оно уже. (Я подозреваю, что причина, по которой это не предлагается, заключается в том, что «простой» способ фактически нарушит кодовые коды с несколькими символами, но во многих случаях мы знаем, что мы не имеем дело с ними).
Благодаря
Update Хех, это немного забавно, что многие думали, это «невозможное», хорошая работа, ребята! Ну, на самом деле это (концептуально) тривиально - pseudojava следует сделать ясно:
class MyReverseString extends String { //of course I can't extend String!
final String delegate;
MyReverseString(String delegate) { this.delegate = delegate; }
int length() { return delegate.length(); }
int charAt(int i) { return delegate.charAt(delegate.length() - 1 - i); }
}
Я оставляю этот вопрос открытым для некоторых больше, только в редких случаях, когда что-то вроде очевидного решения (например, см Jon Skeet's) уже существует в JDK, и кто-то знает об этом. (Опять же, очень маловероятно из-за этих неприятных кодовых точек).
Редактировать Возможно, путаница исходила от того, что у меня была «строка» в заголовке (но не в String!), Тогда как я только прошу «обратную сторону CharSequence». Если вы были в замешательстве, извините. Я бы надеялся, что O (1) часть будет четко представлять, о чем просят.
И, кстати, this was the question that made me ask this one. (Это случай, когда было бы легче запускать регулярное выражение справа налево, а не слева направо, поэтому может быть какое-то практическое значение даже для реализации простых/сломанных кодовых точек)
Как бы вы изменить строку в O (1)? Вы должны перебирать строку, не так ли? Разумеется, нижний предел равен O (n)? – Blorgbeard
В 'O (1)'? Поверните монитор на 180 градусов. –
O (1) не означает, что в ВАШЕМ коде вы выполняете задачу с помощью одной строки кода без циклов ... в любом случае решение StringBuffer() представляется наиболее жизнеспособным. –