您的位置:首页 > 其它

反转字符串中的单词顺序

2011-01-07 14:07 387 查看
/*
* 字符串比如“ad2 lsdkf, lksdjf. sdkfj”倒序排列"sdkfj lksdjf. lsdkf, ad2"  每个单词是空格分开,标点符号当作字母,
* 不能用String的自带的一些方法,比如indexof,trim,split等方法。
*/
public class Test
{
// 反转字符串中的单词顺序
static String reverseWords(String str)
{
// 由于题目限制,所以使用数组解决此问题
char[] result = new char[str.length()];

// 记录最近一次扫描到的空格位置
int lastSpace = result.length;

// 从原字符串的尾部开始扫描,并把结果输出到结果数组
for( int si = result.length - 1, ri = 0; si >= 0; si-- )
{
// 如果扫描到空格
if( str.charAt(si) == ' ' )
{
// 就把这个空格和最近一次扫描到的空格之间的内容(也就是一个单词)输出到结果数组
for( int sj = si + 1; sj < lastSpace; sj++, ri++ )
result[ri] = str.charAt(sj);

// 再把扫描到的空格输出到结果数组
result[ri] = ' ';
ri++;

// 记录最近一次的扫描到的空格位置
lastSpace = si;
}
}

// 把原字符串中的第一个单词输出到结果数组
for( int si = lastSpace - 1, ri = result.length - 1; si >= 0; si--, ri-- )
result[ri] = str.charAt(si);

return new String(result);
}

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

System.out.println(reverseWords(test));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: