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 }
  • 相关阅读:
    leetcode108 Convert Sorted Array to Binary Search Tree
    leetcode98 Validate Binary Search Tree
    leetcode103 Binary Tree Zigzag Level Order Traversal
    leetcode116 Populating Next Right Pointers in Each Node
    Python全栈之路Day15
    Python全栈之路Day11
    集群监控
    Python全栈之路Day10
    自动部署反向代理、web、nfs
    5.Scss的插值
  • 原文地址:https://www.cnblogs.com/daimadebanyungong/p/5018567.html
Copyright © 2011-2022 走看看