将一个字符串进行反转。将字符串中指定部分进行反转。
将一个字符串进行反转。将字符串中指定部分进行反转。比如“abcdefg”反转为”abfedcg”
方式一
思路
1、利用substring(int beginIndex,int endIndex)方法截取所要反转的部分
2、将要反转的部分转换成字符数组,进行反转操作
3、将原字符串转换成字符数组,并将要转换的字符部分进行替换
代码
**
* @auther light
* @Description 将一个字符串进行反转。将字符串中指定部分进行反转。比如“abcdefg”反
* 转为”abfedcg”
* 思路:
* 1、利用substring(int beginIndex,int endIndex)方法截取所要反转的部分
* 2、将要反转的部分转换成字符数组,进行反转操作
* 3、将原字符串转换成字符数组,并将要转换的字符部分进行替换
* @create 2022-11-25 12:17
*/
public class StringAlgorithmsTest02 {
public static void main(String[] args) {
String str="abcdefg";
System.out.println("原字符串是:"+str);
String str1=myReverse(str,2,6);
System.out.println("反转后字符串是:"+str1);
String str2="abcdefg";
System.out.println("原字符串是:"+str2);
System.out.println("反转后字符串是:"+myReverse(str2, 0, 7));
}
public static String myReverse(String str,int start,int end){
String substring = str.substring(start,end);
char[]s1=str.toCharArray();
char[] s=substring.toCharArray();
int j=0;
for(int i=0;i<(substring.length())/2;i++){
char temp=s[i];
s[i]=s[s.length-i-1];
s[s.length-i-1]=temp;
}
for(int i=start;i<end;i++){
s1[i]=s[j];
j++;
}
return new String(s1);
}
}
运行结果
方式二
代码
public String reverse1(String str, int start, int end) {// start:2,end:5
if (str != null) {
// 1.
char[] charArray = str.toCharArray();
// 2.
for (int i = start, j = end; i < j; i++, j--) {
char temp = charArray[i];
charArray[i] = charArray[j];
charArray[j] = temp;
}
// 3.
return new String(charArray);
}
return null;
}
方式三
public String reverse2(String str, int start, int end) {
// 1.
String newStr = str.substring(0, start);// ab
// 2.
for (int i = end; i >= start; i--) {
newStr += str.charAt(i);
} // abfedc
// 3.
newStr += str.substring(end + 1);
return newStr;
}
方式四
public String reverse3(String str, int start, int end) {// ArrayList list = new ArrayList(80);
// 1.
StringBuffer s = new StringBuffer(str.length());
// 2.
s.append(str.substring(0, start));// ab
// 3.
for (int i = end; i >= start; i--) {
s.append(str.charAt(i));
}
// 4.
s.append(str.substring(end + 1));
// 5.
return s.toString();
}