/**
* 反转字符串 遍历整个字符数组
* @param str string字符串
* @return string字符串
*/
public String solve1(String str) {
String temp = "";
int length = str.length();
for(int i = length - 1; i >= 0; --i) {
temp+=str.charAt(i);
}
return temp;
}
/**
* 同上,字符串+=替换成StringBuilder 的append方法
*/
public String solve2(String str) {
char[] chars = str.toCharArray();
int size = chars.length;
StringBuilder tem = new StringBuilder();
int length = str.length();
for(int i = length - 1; i >= 0; --i) {
tem.append(str.charAt(i));
}
return tem.toString();
}
/**
* 同上
*/
public String solve3(String str) {
char[] chars = str.toCharArray();
int size = chars.length;
StringBuilder tem = new StringBuilder();
for (int i = size - 1; i >= 0; --i) {
tem.append(chars[i]);
}
return tem.toString();
}
/**
* JDK StringBuilder 的reverse()方法
*/
public String solve4(String str) {
return new StringBuilder(str).reverse().toString();
}
/**
*
*/
public String solve5(String str) {
char[] array = str.toCharArray();
Stack<Character> stack = new Stack<>();
int length = array.length;
for (int i = 0; i < length; i++) {
stack.push(array[i]);
}
array = new char[length];
for (int i = 0; i < length; i++) {
array[i] = stack.pop();
}
return String.valueOf(array);
}
/**
* 字符数组首尾替换,只需要遍历一半就可以
*/
public String solve(String str) {
char[] array = str.toCharArray();
int length = array.length;
int index = length / 2;
char temp;
for (int i = 0, j = length - 1; i < index; ++i,--j) {
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
return String.copyValueOf(array);
}
/**
* 字符数组首尾替换,只需要遍历一半就可以
*/
public String solve7(String str) {
int length = str.length();
int index = length / 2;
char[] array = new char[length];
for (int i = 0, j = length - 1; i <= index; ++i,--j) {
if (i == j) {
array[i] = str.charAt(j);
break;
}
array[i] = str.charAt(j);
array[j] = str.charAt(i);
}
return String.copyValueOf(array);
}