反转字符串(字符串处理)

比较简单的一题,而且可以通过多种方法解决。


思路1:使用递归。边界条件即为字符串的长度为1。

public static String reverse1(String s) {
if(s==null||s.length()==0)

return s;

                        return s.length()==1?s:reverse1(s.substring(1))+s.charAt(0);

}

递归的思路非常直接,但频繁地切分和拼接字符串会导致性能不佳,因为字符串是一个不可变对象,任何对字符串修改的方法其实都直接new一个修改后的字符串返回。


思路2:将字符串转化为字符数组,然后将数组反序即可。

public static String reverse2(String s) {
if(s==null||s.length()==0)
return s;
char c[] = s.toCharArray();
int length = s.length();
for(int i=0;i<length/2;i++)
swap(c,i,length-1-i);

return new String(c);

}

先转化成字符数组再操作,有效地减少了对字符串的直接操作。


思路3:将一个字符串反序其实就是将其逆序输出:

public static String reverse3(String s) {
if(s==null||s.length()==0)

return s;

char c[] = s.toCharArray();
StringBuilder sb = new StringBuilder();
for(int i=c.length-1;i>-1;i--)
sb.append(c[i]);

return sb.toString();

}

直接反序输出即可,这里使用了StringBuilder类,它与String类相似,但其内部实现是一个非final的字符数组,可以直接修改而无需再次创建对象,在字符串频繁拼接场景相比String性能大大提高。

如果你有更好的思路欢迎在评论区分享交流,感谢观看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值