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 }
  • 相关阅读:
    Ubuntu下安装、激活并配置Pycharm
    高分辨率下firefox字体和界面自动放大的问题
    Java如何根据IP获取当前定位
    WebSocket介绍和一个简单的聊天室
    java注解处理
    TCP/IP协议三次握手与四次握手流程解析
    mybatis如何做分页处理
    xshell学习笔记
    正交表生成工具 PICT 成对组合覆盖 收藏
    Ready api groovy script 参数化
  • 原文地址:https://www.cnblogs.com/daimadebanyungong/p/5018567.html
Copyright © 2011-2022 走看看