字符串比如“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]
实在不行用正则。