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 };
  • 相关阅读:
    【转】Android中的颜色设置
    hashlib —— Python 的 md5 和 sha1 加密
    caffe 在 windows 下的配置(scriptsuild_win.cmd)
    caffe 在 windows 下的配置(scriptsuild_win.cmd)
    windows 批处理脚本(batch scripting)
    windows 批处理脚本(batch scripting)
    matlab 辅助函数 —— 文件下载与文件解压
    matlab 辅助函数 —— 文件下载与文件解压
    翻译的艺术 —— 句子的翻译(意译)
    翻译的艺术 —— 句子的翻译(意译)
  • 原文地址:https://www.cnblogs.com/hslzju/p/5450468.html
Copyright © 2011-2022 走看看