写代码一定要注意边界问题,要考虑全面开始的边界以及结束的边界,已防止出现严重的错误。

        注意边界,注意边界,注意边界,重要的的问题说三遍

题目描述

牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
 
代码如下:
 1 public class ReverseSentences {
 2 
 3     /*
 4      *思路:
 5      *和LDR左移字符串那题思路一样,只不过这次是根据空格对多个字符串进行求逆,最后再整体求逆 
 6      * 设逆运算函数为r(x);
 7      * ZYX = r(r(Z))r(r(Y))r(r(x))
 8      * 
 9      * 需要注意的是边界问题,最后一个单词的翻转要考虑
10      */
11     public void ReverseStr(char [] str,int start,int end)
12     {
13         char tmp;
14         while(start < end)
15         {
16             tmp = str[start];
17             str[start] = str[end];
18             str[end] = tmp;
19             start++;
20             end--;
21         }
22     }
23     
24     public String ReverseSentence(String str) {
25         
26         if(str == null || str.length() == 0)
27         {
28             return str;
29         }
30         char strArray[] = str.toCharArray();
31         
32         int start = 0,end = 0;
33         for(int i = 0; i < strArray.length; i++)
34         {
35             if(strArray[i] == ' ')
36             {
37                 ReverseStr(strArray, start, end);
38                 start = end = i + 1;//跳过空格继续翻转下一个单词
39             }
40             else 
41             {
42                 end = i;
43             }
44         }
45         
46         ReverseStr(strArray,start,strArray.length - 1); //翻转最后一个单词,由于上面的循环是翻转空格之前的单词,会漏掉最后一个
47         
48         ReverseStr(strArray, 0, strArray.length - 1); //对整个句子进行翻转
49         
50         return new String(strArray);
51     }
52     
53     public static void main(String[] args) {
54         // TODO Auto-generated method stub
55         
56         String string = "I am a student.";
57         
58         ReverseSentences reverseSentences = new ReverseSentences();
59         
60         String str = reverseSentences.ReverseSentence(string);
61         
62         System.out.println(str);
63 
64     }
65 
66 }

 

 

posted @ 2015-12-04 10:29  代码的搬运工  阅读(468)  评论(0编辑  收藏  举报