LintCode: Rotate String

简介:

C++,

time: O(n)

space:O(n)

复制代码
 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         // empty string->return
11         if ("" == str) {
12             return;
13         }
14         // offset is 0, return
15         int size = str.size();
16         offset = offset%size;
17         if (0 == offset) {
18             return;
19         }
20         // tmp = str+str->substr
21         string tmp(str);
22         tmp.reserve(size<<1);
23         tmp.insert(tmp.end(), str.begin(), str.end());
24         str = tmp.substr(size-offset, size);
25     }
26 };
复制代码

 C++,

time:O(n)

space:O(1)

复制代码
 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         // empty string->return
11         if ("" == str) {
12             return;
13         }
14         // offset is 0, return
15         int size = str.size();
16         offset = offset%size;
17         if (0 == offset) {
18             return;
19         }
20         // 3-steps reverse
21         reverse(str, 0, size-offset-1);
22         reverse(str, size-offset, size-1);
23         reverse(str, 0, size-1);
24     }
25     void reverse(string &str, int from, int to) {
26         char tmp;
27         while( from<to ) {
28             tmp = str[from];
29             str[from] = str[to];
30             str[to] = tmp;
31             from++;
32             to--;
33         }
34     } 
35 };
复制代码

 

本文转自ZH奶酪博客园博客,原文链接:http://www.cnblogs.com/CheeseZH/p/4999687.html,如需转载请自行联系原作者

相关文章
|
索引
LeetCode 345. Reverse Vowels of a String
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
100 0
LeetCode 345. Reverse Vowels of a String
|
机器学习/深度学习 NoSQL
LeetCode 344. Reverse String
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
96 0
LeetCode 344. Reverse String
LeetCode 87. Scramble String
题意是给定两个字符串,判断他们是否满足某种关系.
81 0
LeetCode 87. Scramble String
|
索引
LeetCode 97. Interleaving String
给定s1,s2,s3,确定s3是否由s1和s2的交织形成,若是返回True,若不是则返回False.
67 0
LeetCode 97. Interleaving String
AT水题String Rotation
题目描述 You are given string S and T consisting of lowercase English letters. Determine if S equals T after rotation. That is, determine if S equals T after the following operation is performed some number of times: Operation: Let S=S1S2…S|S|. Change S to S|S|S1S2…S|S|−1.
104 0
AT水题String Rotation
|
Python
Leetcode-Easy 796. Rotate String
Leetcode-Easy 796. Rotate String
65 0
Leetcode-Easy 796. Rotate String
LeetCode之Reverse String II
LeetCode之Reverse String II
114 0
LeetCode之Reverse String
LeetCode之Reverse String
101 0
hdu 3336 Count the string
点击打开链接hdu 3336 思路:kmp+next数组的应用 分析: 1 题目要求的是给定一个字符串s,求字符串s的所有的前缀在s的匹配的次数之和mod10007. 2 很明显n1,为什么要从n开始而不是1开始呢,这里因为是要求前缀的匹配数而不是后缀; 4 求sum的时候注意每一步都有可能超过范围,所以就要求一次sum同时取模一次。
847 1