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

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

    题目描述

    牛客最近来了一个新员工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 }
  • 相关阅读:
    [转]nginx+fastcgi+c/c++搭建高性能Web框架
    [转]向facebook学习,通过协程实现mysql查询的异步化
    [转]ReactPHP── PHP版的Node.js
    [转]nodejs npm常用命令
    [LINK]php的三种CLI常量:STDIN,STDOUT,STDERR
    苹果iPhone如何区分港版、国行、水货
    16进制字符串转36进制字符串
    设置apache https服务
    [转]Class 'ThinkLog' not found
    PHP PSR规范
  • 原文地址:https://www.cnblogs.com/daimadebanyungong/p/5018567.html
Copyright © 2011-2022 走看看