一道关于字符串倒过来的笔试题

字符串比如“ad2 lsdkf, lksdjf. sdkfj”倒序排列"sdkfj lksdjf. lsdkf, ad2" 每个单词是空格分开,标点符号当作字母,不能用String的自带的一些方法,比如indexof,trim,split等方法。

这个问题解决的方法比较多。下面的方法可以实现
[quote]
import java.util.ArrayList;
import java.util.List;

public class Test
{
public static void main(String[] args)
{
String string = "ad2 lsdkf, lksdjf. sdkfj dddd";

    char[] b = string.toCharArray();

    int bLength = b.length;

    List list = new ArrayList(); // 存放获取分隔以后的字符串
    StringBuffer resultString = new StringBuffer();

    for (int i = 0; i < bLength; i++)
    {
        resultString.append(b[i]);
        if (b[i] == ' ')// 如果是空格 添加到 list中
        {
            list.add(resultString);
            resultString = new StringBuffer();
            continue;
        }

        if (i == bLength - 1) // 如果是最后一个 添加到 list中
        {
            list.add(resultString);
        }
    }

    // 将结果集反序输出

    for (int i = list.size() - 1; i >= 0; i--)
    {
        System.out.print(list.get(i));
        System.out.print(" ");
    }
}

}

[/quote]

先把字符串变成数组。你不是说每个单词都是用空格分开的吗?那就split(" ")组成一个数组。假如写成长度为四个的。
[code="java"]
String str = "a b c d";
String[] s = new String[4];
s= str.split(" ");
[/code]
然后在写一个方法用于转换的。
[code="java"]
public static String[] turnBack(String[] str){
String[] backStr = new String[str.length];
for(int i =0;i<str.length;i ++){
backStr[i] = str[str.length-1-i];
}
return backStr;
}
[/code]
返回的是字符串数组,你在变成字符串输出就是了。

要不这么写也行,不过得分考题主要考你的本质。
[code="java"]

String s = "a b c d";
String[] str = s.split(" ");
String s2= "";
for(int i =0;i<str.length;i ++){
s2 = s2+str[str.length-1-i];
}
System.out.println(s2);[/code]

[code="java"]
public static String conversion(String in)
{
// 用来排序的
List list = new ArrayList();

    // 拼接字符串
    StringBuffer sb = new StringBuffer();

    // 计算输入字符串长度
    final int count = in.length();

    // 循环遍历
    for (int i = 0; i < count; i++)
    {
        // 取出单个字符
        char c = in.charAt(i); // (不知道这个函数是否能用)

        // 拼接
        sb.append(c);

        // 是否碰到空格或者是最后一位
        if (c == ' ' || i == count - 1)
        {
            list.add(0, sb.toString().trim());
            sb.delete(0, sb.length());
            continue;
        }
    }
    sb.delete(0, sb.length());

    // 拼接成字符串
    for (int i = 0; i < list.size(); i++)
    {
        sb.append(list.get(i)).append(" ");
    }
    return sb.substring(0, sb.length() - 1);
}

[/code]

实在不行用正则。