给定一个字符串,将字符串中指定部分进行反转

一个简单的算法题,有如下3中解决办法:

public class ReverseTest {
	public static void main(String[] args) {
		String str = "abcdefg";
		// String reverse = reverse1(str,2,5);
		// String reverse = reverse2(str,2,5);
		String reverse = reverse3(str,2,5);
		System.out.println(reverse);
	}

	// 方式一:根据索引遍历交换
	public static String reverse1(String str, int startIndex, int endIndex){
		if (str != null) {
			char[] ch = str.toCharArray();
			for (int x = startIndex, y = endIndex; x < y; x++, y--) {
				char temp = ch[x];
				ch[x] = ch[y];
				ch[y] = temp;
			}
			return new String(ch);
		}
		return null;
	}

	// 方式二:根据索引将其分为三部分
	public static String reverse2(String str, int startIndex, int endIndex){
		if (str != null) {
			char[] ch = str.toCharArray();
			// 第一部分
			String s = str.substring(0,startIndex);
			// 第二部分
			for (int i = endIndex; i >= startIndex; i--) {
				s += str.charAt(i);
			}
			// 第三部分
			s += str.substring(endIndex + 1);
			return s;
		}
		return null;
	}

	// 方式三:同第二种方法,使用 StringBuilder/StringBuffer 替换 String
	public static String reverse3(String str, int startIndex, int endIndex) {
		if (str != null) {
			StringBuilder builder = new StringBuilder(str.length());
			// 第一部分
			builder.append(str.substring(0, startIndex));
			// 第二部分
			for (int i = endIndex; i >= startIndex; i--) {
				builder.append(str.charAt(i));
			}
			// 第三部分
			builder.append(str.substring(endIndex + 1));
			return builder.toString();
		}
		return null;
	}
}

要将学会的知识付予运用,否则迟早会忘却!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值