反转字符串中的单词顺序
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)); } }
相关文章推荐
- leetcode第一题 将一个字符串的单词顺序反转输出
- 剑指offer面试题[42]-反转单词顺序VS左旋转字符串
- 第六题 反转字符串,单词内部顺序不变
- 反转字符串,单词内部顺序不变
- 字符串左旋转&&反转单词顺序&&Text Reverse&&句子的逆序
- String——反转单词顺序VS左旋字符串
- 42 - 反转单词的顺序 | 左旋转字符串
- 剑指Offer(Java版):反转单词顺序VS左旋转字符串
- 42-反转单词顺序/左旋转字符串
- 【字符串1】反转单词顺序
- 2015蘑菇街笔试题——给定一个英文单词的字符串,按照英文单词的顺序反转输出
- 剑指Offer面试题42(Java版):反转单词顺序VS左旋转字符串
- (ZZ~~)字符串单词顺序反转
- C语言来实现字符串反转 只有单词顺序反转,单词里的字母不反转
- 面试题42反转单词顺序VS左旋字符串(循环左移字符串)
- [置顶] 剑指offer:第42题反转单词顺序VS左旋转字符串
- 字符串单词顺序反转
- alg: 反转字符串中的单词顺序
- 剑指Offer 42反转单词顺序 vs左旋转字符串
- 字符串单词顺序反转