最近遇到一个面试题,主要内容要求将英文“welcome to china"倒序输出即“china to welcome”。
将abc,倒序输出cba很简单,但是将单词分割开,再倒序输出就很麻烦。为此,有以下思路:
总的来说是利用split拆分。拆分过程利用数组存储,顺序拆分,倒序存储。也就是说,假如共有三个元素,a[0],a[1],a[2],我们顺序拆分时,先存储a[2],再存储a[1],最后存储a[0],并考虑中间的空格情况。以下是具体的代码:
public class Test1 {
public static void main(String[] args) {
//这里的reverse是自己定义的一个拆分方法
String str = reverse("welcome to china");
System.out.println(str);
}
private static String reverse(String str) {
StringBuffer sbf = null;
if (str != null) {
String[] arr = str.split(" ");
//for循环倒序存储
for (int i = arr.length - 1; i >= 0; i--) {
if (sbf == null) {
sbf = new StringBuffer();
sbf.append(arr[i]);
} else {
sbf.append(" ").append(arr[i]);
}
}
}
return sbf == null ? "" : sbf.toString();
}
}
运行结果:china to welcome