将一个字符串中指定位置进行反转
2021/5/22 18:25:20
本文主要是介绍将一个字符串中指定位置进行反转,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.将String中指定位置进行反转
1.1问题阐述
举个例子:“abcdefg”字符串中指定2到5号位置进行反转,-------》"abfedcg"
1.2问题解决思路
如果题目阐述全部进行反转:则直接调用StringBuffer类里面的reverse()方法即可,但现在需要有指定位置,所以我们需要自己实现,调用String里面的相关方法,我们有如下3个解决思路:
思路一
我们可以将“abcdefg”先转换为字符数组,调用tocharArray()方法,保存在一个arr数组里面,然后在arr数组里面从指定位置2开始,将2赋值给start,5赋值给end,将2号和5号位置交换,即start和end交换,然后start++,end--,直到srart>end
下面我们来看下整体的代码:
public String reverse(String str,int start,int end){ if (str == null||str.length() == 0){ return null; } char[] arr = str.toCharArray();//将字符串转换为字符数组 for (int x = start, y= end;x< y;x++,y--){ char tmp = arr[x]; arr[x] = arr[y]; arr[y] = tmp; } return new String(arr); } 测试用例: String str = "abcdefg"; String reverse = reverse2(str, 2, 5); System.out.println(reverse);
运行结果:
思路二:
思路一里面没有用到String类给我们提供的方法,而且,开辟了一个char类型数组,浪费了内存空间。基于这些弊端,在思路二中,我们调用String类提供的方法,比如:字符串"abcdef",从2到5进行反转,先用方法subString(0,2)获取到“ab”,赋值给sub因为左闭右开,不包括2号索引下标,没有字符c,然后从5号下标开始往前进行for循环,用charAt()方法进行获取i号下标的元素,并拼接到sub,最后将剩余的5+1号到结束的字符串用substring()方法拼接给sub。
下面我们来看下代码:
public String reverse1(String str,int start,int end){ if (str == null||str.length() == 0){ return null; } String substring = str.substring(0, start); for (int i = end;i>=start;i--){ substring += str.charAt(i); } substring += str.substring(end+1); return substring; } 测试用例: String str = "abcdefg"; String reverse = reverse2(str, 2, 5); System.out.println(reverse);
运行结果:
思路三
思路三是在思路二的基础上稍作改进,因为我们知道,String类是不可变的序列,每次执行拼接操作时,都要重新开辟内存进行新造,而StringBuilder类是可变的字符序列,每次执行拼接操作时,不用新开辟内存,直接往数组后面拼接。与思路二的思路是一样的
只是更加节省内存空间,下面我们来看下代码:
public String reverse2(String str,int start,int end){ if (str == null||str.length()==0){ return null; } StringBuilder builder = new StringBuilder(str.length()); builder.append(str.substring(0,start)); for (int i = end;i>=start;i--){ builder.append(str.charAt(i)); } builder.append(str.substring(end+1)); return builder.toString(); } 测试用例: String str = "abcdefg"; String reverse = reverse2(str, 2, 5); System.out.println(reverse);
运行结果:
谢谢浏览!
这篇关于将一个字符串中指定位置进行反转的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28微服务架构中API版本控制的实践
- 2024-09-28AI给的和自己写的Python代码,都无法改变输入框的内容,替换也不行
- 2024-09-27Sentinel配置限流资料:新手入门教程
- 2024-09-27Sentinel配置限流资料详解
- 2024-09-27Sentinel限流资料:新手入门教程
- 2024-09-26Sentinel限流资料入门详解
- 2024-09-26Springboot框架资料:初学者入门教程
- 2024-09-26Springboot框架资料详解:新手入门教程
- 2024-09-26Springboot企业级开发资料:新手入门指南
- 2024-09-26SpringBoot企业级开发资料新手指南