算法--句子的逆序问题

转载请标明出处http://www.cnblogs.com/haozhengfei/p/17af8e37ed98b952030de557e7cb7e13.html 


句子的逆序问题

 
句子的逆序练习题
 

第6节 句子的逆序练习题

 

对于一个字符串,请设计一个算法,只在字符串的单词间做逆序调整,也就是说,字符串由一些由空格分隔的部分组成,你需要将这些部分逆序。

给定一个原字符串A和他的长度,请返回逆序后的字符串。

测试样例:
"dog loves pig",13
返回:"pig loves dog"
 
 
1
import java.util.*;
2

3
public class Reverse {
4
    public String reverseSentence(String A, int n) {
5
        if(null == A || n == 0) 
6
            return null;
7
        /**
8
         * 翻转A字符串
9
         * dog loves pig  -->   gip sevol god
10
         */
11
        String str = reverseAll(A.toCharArray());
12
        /**
13
         * 按照空格进行切分,并对每个词在进行翻转即为所求
14
         * gip sevol god  -->   pig loves dog
15
         */
16
        String[] splits = str.split(" ");
17
        return reverseWord(splits);
18
    }
19
    //翻转整个字符串
20
    public String reverseAll(char[] charArray) {
21
        StringBuilder sb = new StringBuilder();
22
        for(int i=charArray.length-1; i>-1; i--){
23
            sb.append(charArray[i]);
24
        }
25
        return sb.toString();
26
    }
27
    //翻转每个词
28
    public String reverseWord(String[] splits) {
29
        StringBuilder sb = new StringBuilder();
30
        for(String str: splits){
31
            sb.append(reverseAll(str.toCharArray()));
32
            sb.append(" ");
33
        }
34
        return sb.toString().substring(0, sb.toString().length()-1);
35
    }
36
}
 
 
您的代码已保存
答案正确:恭喜!您提交的程序通过了所有的测试用例
 
原文地址:https://www.cnblogs.com/haozhengfei/p/17af8e37ed98b952030de557e7cb7e13.html