zoukankan      html  css  js  c++  java
  • [容易]旋转字符串

    题目来源:http://www.lintcode.com/zh-cn/problem/rotate-string/

    先贴一个错误的代码,通过了示例,但是没有通过全部案例:

     1 class Solution {
     2 public:
     3     /**
     4      * @param str: a string
     5      * @param offset: an integer
     6      * @return: nothing
     7      */
     8     void rotateString(string &str,int offset){
     9         //wirte your code here
    10         string s;
    11         string temp;
    12         s.assign(str,str.size()-offset,str.size()-1);
    13         temp.append(s,0,offset);
    14         temp.append(str,0,str.size()-offset);
    15         str.swap(temp);
    16     }
    17 };

    需要考虑到offset大于字符串长度的情况。加上offset=offset%str.size();之后还有问题。

    没有对字符串为空的情况处理,需要再加上if(str.size()>0)的判断。

    可以accept的程序如下:

     1 class Solution {
     2 public:
     3     /**
     4      * @param str: a string
     5      * @param offset: an integer
     6      * @return: nothing
     7      */
     8     void rotateString(string &str,int offset){
     9         //wirte your code here
    10         if(str.size()>0)
    11         {
    12             offset=offset%str.size();
    13             string s;
    14             string temp;
    15             s.assign(str,str.size()-offset,str.size()-1);
    16             temp.append(s,0,offset);
    17             temp.append(str,0,str.size()-offset);
    18             str.swap(temp);
    19         }
    20     }
    21 };

    可以Accept的正确程序2:

     1 class Solution {
     2 public:
     3     /**
     4      * @param str: a string
     5      * @param offset: an integer
     6      * @return: nothing
     7      */
     8     void rotateString(string &str,int offset){
     9         //wirte your code here
    10         if (str.size()>0) {
    11             offset = offset % str.size();
    12             str=str.substr(str.size() - offset, offset) + str.substr(0, str.size() - offset);
    13             //substr(n1,n2)下标n1开始n2个字符。
    14             //用+运算符连接字符串。
    15         }
    16     }
    17 };

    可以Accept的正确程序3:

     1 class Solution {
     2 public:
     3     /**
     4      * @param str: a string
     5      * @param offset: an integer
     6      * @return: nothing
     7      */
     8     void rotateString(string &str,int offset){
     9         //wirte your code here
    10         if (!str.empty()) {
    11             offset %= str.length();
    12             reverse(str.begin(), str.begin() + str.length() - offset);
    13             reverse(str.begin() + str.length() - offset, str.end());
    14             reverse(str.begin(), str.end());
    15             //reverse(begin,end);反转[begin,end)区间
    16         }
    17     }
    18 };
  • 相关阅读:
    169. Majority Element
    283. Move Zeroes
    1331. Rank Transform of an Array
    566. Reshape the Matrix
    985. Sum of Even Numbers After Queries
    1185. Day of the Week
    867. Transpose Matrix
    1217. Play with Chips
    766. Toeplitz Matrix
    1413. Minimum Value to Get Positive Step by Step Sum
  • 原文地址:https://www.cnblogs.com/hslzju/p/5450468.html
Copyright © 2011-2022 走看看