字符串反转
/**采用递归实现,将字符串分为前后两部分,颠倒**/ public String reverse1(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 reverse1(right) + reverse1(left); } /**扫描一遍**/ public String reverse2(String s) { int length = s.length(); String reverse = ""; for (int i = 0; i < length; i++) reverse = s.charAt(i) + reverse; return reverse; } public String reverse3(String s) { char[] array = s.toCharArray(); String reverse = ""; for (int i = array.length - 1; i >= 0; i--) reverse += array[i]; return reverse; } public String reverse4(String s) { return new StringBuffer(s).reverse().toString(); } public String reverse5(String s) { //char[] s = orig.toCharArray(); int n = s.length() - 1; int halfLength = n / 2; for (int i = 0; i <= halfLength; i++) { char temp = s.charAt(i); s = this.Stringinsert(s , s.charAt(n-i),i); s = this.Stringinsert(s , temp , n-i); } return new String(s); } /**java-insert a char**/ public String Stringinsert(String a,char b,int t){ return a.substring(0,t)+b+a.substring(t+1,a.length()); } public String reverse6(String s) { char[] str = s.toCharArray(); int begin = 0; int end = s.length() - 1; while (begin < end) { str[begin] = (char) (str[begin] ^ str[end]); str[end] = (char) (str[begin] ^ str[end]); str[begin] = (char) (str[end] ^ str[begin]); begin++; end--; } return new String(str); } public String reverse7(String s) { char[] str = s.toCharArray(); Stack<Character> stack = new Stack<Character>(); for (int i = 0; i < str.length; i++) stack.push(str[i]); String reversed = ""; for (int i = 0; i < str.length; i++) reversed += stack.pop(); return reversed; }
原文:http://www.cnblogs.com/lxq0309/p/3676635.html