给定一个string iniString,请返回一个string,为该字符串翻转后的结果。要求不使用额外数据结构和储存空间,可以使用单个过程变量,保证字符串的长度小于等于5000。
测试样例:
"This is nowcoder"
返回:"redocwon si sihT"
package june.code.byhehe.book.GoldBook;
import java.util.Scanner;
public class CM2StrReverse {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StrReverse sr = new StrReverse();
String iniString = sc.nextLine();
while (sc.hasNext()){
System.out.println(sr.reverseString(iniString));
}
}
}
class StrReverse{
// 方法一、 使用 StringBuilder 进行翻转
public String reverseString(String iniString) {
// write code here
StringBuilder sb = new StringBuilder(iniString);
return sb.reverse().toString();
}
// 方法二、使用 char 数组 进行翻转
public String reverseString2(String iniString) {
char[] chars = iniString.toCharArray();
int left = 0, right = chars.length-1;
while (left < right){
char temp = chars[right];
chars[right] = chars[left];
chars[left] = temp;
left++;
right--;
}
return chars.toString();
}
// 使用 二分法 进行反转 不断二分直至 最小
public String reverseString3(String s) {
int length = s.length();
if(length <= 1)
return s;
// 分割成两部分
String left = s.substring(0, length/2);
String right = s.substring(length/2, length);
// 顺序不能颠倒 右 + 左
return reverseString3(right) + reverseString3(left);
}
}
class Reverse: def reverseString(self, iniString): # write code here return iniString[::-1]
public String reverseString(String iniString) {
char temp;
int length = iniString.length();
int mid = length / 2;
char[] arr = iniString.toCharArray();
for (int i = 0; i < length; i++) {
if (i < mid) {
//exchange
temp = arr[i];
arr[i] = arr[length - 1 - i];
arr[length - 1 - i] = temp;
} else break;
}
return String.valueOf(arr);
}
思路就是首尾交换,循环一半,时间复杂度n/2
import java.util.*;
public class Reverse {
public String reverseString(String iniString) {
// write code here
char res[] = new char[iniString.length()];
for (int i = 0; i < iniString.length(); i++) {
res[i] = iniString.charAt(iniString.length() - 1 - i);
}
return String.copyValueOf(res);
}
} 递归
public static String reverseString(String iniString) {
// write code here
if ("".equals(iniString)){
return "";
}
String lastString = iniString.substring(iniString.length() - 1);
return lastString + reverseString(iniString.substring(0,iniString.length() - 1));
}
public class Reverse {
public static void main(String[] args) {
System.out.println(reverseString("linhongcun"));
}
public static String reverseString(String iniString) {
StringBuilder string = new StringBuilder();
for (int i = 0; i < iniString.length(); i++) {
string.append(iniString.charAt(iniString.length()-i-1));
}
return string.toString();
}
}
倒装