- 字符串逆置
思路:将字符串先转变为字符数组,使用str.toCharArray()方法,交换首尾,相遇的时候交换结束,返回字符串
package com.bite.String;
import java.util.Scanner;
/**
* @program: bite
* @description
* @author: wenwen
* @create: 2021-07-12 18:08
**/
//逆置字符串
public class reverse {
public static String reverse(String str,int begin,int end){
char[] val = str.toCharArray();
while(begin < end){
char temp = val[begin];
val[begin] = val[end];
val[end] = temp;
begin++;
end--;
}
return new String(val);
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str = scan.next();
System.out.println(str);
String ret = reverse(str,0,str.length() - 1);
System.out.println(ret);
}
}
- 输入n,将前n个字符放到后面,比如输入3 abcdef 输出defabc
-
思路:
先将前3个字符逆置,得到cbadefg
再将后面4个字符逆置,得到cbagfed
最后将全部的字符逆置,得到defgabc
-
值得注意的点:字符串不可变,所以要生成新的字符串。
package com.bite.String;
import java.util.Scanner;
/**
* @program: bite
* @description
* @author: wenwen
* @create: 2021-07-12 14:51
**/
public class practise {
//逆置一个字符串
public static String reverse(String str,int begin,int end){
char[] val = str.toCharArray();
while(begin < end){
char tmp = val[begin];
val[begin] = val[end];
val[end] = tmp;
begin++;
end--;
}
// return new String(val);
return String.copyValueOf(val);
}
public static String func(String str,int n){
if(str == null||n <= 0 || n >=str.length()){
return null;
}
str = reverse(str,0,n-1);
str = reverse(str,n,str.length()-1);
str = reverse(str,0,str.length() - 1);
return str;
}
public static void main1(String[] args) {
String str = "aaabcddd";
String ret = reverse(str,0,str.length()-1);
System.out.println(ret);
// System.out.println(str);
// System.out.println(str.charAt(0));
// System.out.println(str.charAt(5));
// String ret = str.replace(str.charAt(1),str.charAt(4));
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
String str = scan.next();
String ret = func(str,n);
System.out.println(ret);
}
}