字符串翻转问题在开发中经常遇到,这里通过一个实现类来做个小结。当然,这也可能在Java Script中用到,那只有用JS的语法来实现,道理是一样的。
public class StringReverse {
/**
* 字符串翻转
*
* @param args
*/
public static void main(String[] args) {
System.out.println("=====递归方法=====");
System.out.println(method1("abcd"));
System.out.println(method1("abcde"));
System.out.println("=====递归方法=====");
System.out.println(method2("abcd"));
System.out.println(method2("abcde"));
System.out.println("=====带行间翻转=====");
System.out.println(method3("abc\ndef\nghi\njkl"));
}
/*
* 非递归方法
*/
public static String method1(String str) {
char c[] = str.toCharArray();
char t;
for (int i = 0; i < (str.length() + 1) / 2; i++) {
t = c[i];
c[i] = c[c.length - i - 1];
c[c.length - i - 1] = t;
}
String str2 = new String(c);
return str2;
}
/*
* 递归方法
*/
public static String method2(String s) {
if (s.length() > 1)
return method2(s.substring(1)) + s.substring(0, 1);
else
return s;
}
/*
* 带行间的翻转
*/
public static String method3(String s) {
String[] s1 = s.split("\n");
String s2 = "";
for (int i = s1.length - 1; i >= 0; i--) {
s2 += method2(s1[i]);
if (i != 0) {
s2 += "\n";
}
}
return s2;
}
}
输出结果:
=====递归方法=====
dcba
edcba
=====递归方法=====
dcba
edcba
=====带行间翻转=====
lkj
ihg
fed
cba