java中和char功能相反的是_在Java中反转一个字符串,在O(1)中?

那么你可以很容易地生成一个返回相同长度的CharSequence的实现,当被问及一个特定的字符时,返回一个长度为-1的数据。当然,toString()变成O(n)…

创建反转的CharSequence将是O(1) – 所有它需要做的是存储对原始CharSequence的引用。迭代序列中的所有字符都将是O(n),显然。

请注意,创建一个反转的CharSequence(根据您的问题的正文)与创建一个反转的String(根据您的问题的标题)不同。实际生成String是O(n),必须是。

示例代码,大部分未经测试:

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();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值