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


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

    题目描述

    牛客最近来了一个新员工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 }
  • 相关阅读:
    python用win32com模拟浏览器
    python判断输入的字符串是否为数字
    phpwind9.0去掉头部版权信息 Powered by phpwind
    Python批量查询网站收录
    结巴分词 python中文分词
    phpwind 9.0 RC版[20121108],伪静态无效的问题
    [转]LINQ: Building an IQueryable provider series
    获取鼠标选择的文本内容之JavaScript代码
    M2级遍历和范围Range
    转:浏览器的用户代理字符串
  • 原文地址:https://www.cnblogs.com/daimadebanyungong/p/5018567.html
Copyright © 2020-2023  润新知