一、字符串反转,共搜集了 7 种方法
public class StringReversed {
public static void main(String[] args) {
String s = "abcd,efgh";
System.out.println("原字符:" + s);
System.out.println("反转后:" + reverse2(s));
reverse1(s);
}
public static void reverse1(String s) { //方法一
/* char[] c = new char[s.length()];
for(int j = 0, i = s.length() - 1; i >= 0; i--) {
c[j++] = s.charAt(i);
}*/
char[] c = s.toCharArray(); //方法二
for(int i = 0; i < s.length() / 2; i++) {
char temp = c[i];
c[i] = c[s.length() - 1 - i];
c[s.length() - 1 - i] = temp;
}
for(char l: c)
System.out.print(l);
}
public static String reverse2(String s) {
// return new StringBuffer(s).reverse().toString(); //方法三
// return new StringBuilder(s).reverse().toString(); //方法四
/* StringBuffer sb = new StringBuffer(); //方法五
for(int i = s.length() - 1; i >= 0; i--) {
sb = sb.append(s.substring(i, i + 1));
}
return sb.toString();*/
/* int len = s.length(); //方法六
if (len <= 1) {
return s;
}
else {
String left = s.substring(0, len / 2);
String right = s.substring(len / 2, len);
return reverse(right) + reverse(left);
}*/
String result = ""; //方法七
for(int i = s.length() - 1; i >= 0; i--) {
String temp = s.substring(i, i + 1);
result += temp;
}
return result;
}
}
网上还有一些其他方法,比如利用栈的“后进先出”的特性。等等。
二、单词反转
package reverse;
public class WordsReversed {
public static void main(String[] args) {
String s = "one two three four five six seven eight nine ten";
System.out.println("原句子:" + s.toString());
System.out.println("反转后:" + reverse(s));
}
private static String reverse(String s) {
// TODO Auto-generated method stub
StringBuffer sb = new StringBuffer();
String[] words = s.split(" ");
for(int i = words.length - 1; i >= 0; i--) {
sb.append(words[i]).append(" ");
}
return sb.toString();
}
}
单词的反转也有很多方法,比如可以用首尾交换的方法实现