小编典典
好的,您可以轻松地生成一个实现,CharSequence该实现返回相同的长度,当要求输入特定字符时,返回length-
index-1。toString()变成O(n)当然…
创建
相反的对象CharSequence将是O(1)-毕竟要做的就是存储对原始的引用CharSequence。显然,对序列中的所有字符进行迭代将是O(n)。
请注意,创建反向CharSequence(根据问题的正文)与创建反向(根据问题的 标题 ) 并不
相同。实际生成String是O(n),并且必须是。String __
示例代码,大多数未经测试:
public final class ReverseCharSequence implements CharSequence
{
private final CharSequence original;
public ReverseCharSequence(CharSequence original)
{
this.original = original;
}
public int length()
{
return original.length();
}
public char charAt(int index)
{
return original.charAt(original.length() - index - 1);
}
public CharSequence subSequence(int start, int end)
{
int originalEnd = original.length() - start;
int originalStart = original.length() - end;
return new ReverseCharSequence(
original.subSequence(originalStart, originalEnd));
}
public String toString()
{
return new StringBuilder(this).toString();
}
}
2020-11-13