【简单】Lintcode 8:Rotate String
2018-01-17 16:27
169 查看
Given a string and an offset, rotate string by offset. (rotate from left to right)
Have you met this question in a real interview?
Yes
Example
Given
解题思路:
1、题目中传递的参数是string类型,所以删除插入元素比一般数组方便,降低题目的难度,但也需要知道string类的一些常用成员函数。
2、思路很简单:将末尾元素复制取出来插入到第一个元素前面,然后删除末尾元素。但这里有一个小技巧:当str循环移动了它长度次数时,此时str恢复到未做任何移动的初始状态。
例如:str = "abc",此时str.length() = 3。第一次移动后,str = "cab",第二次移动后,str = "bca",第三次移动后,str = "abc"
3、对于输入参数异常的情况,要在一开始就处理好。
class Solution {
public:
/*
* @param str: An array of char
* @param offset: An integer
* @return: nothing
*/
void rotateString(string &str, int offset)
{
// write your code here
if(str.empty()) return;
if(offset == 0) return;
for(int i=1;i<=offset%str.length();i++)
{
string a = str;
const char * temp = &a[a.length()-1]; //复制取出最后一位元素
str.insert(0,temp); //将最后一位元素插入第一个位置
str.erase(str.end()-1,str.end()); //删除末尾的一个元素
}
}
};
4000
Have you met this question in a real interview?
Yes
Example
Given
"abcdefg".
offset=0 => "abcdefg" offset=1 => "gabcdef" offset=2 => "fgabcde" offset=3 => "efgabcd"
解题思路:
1、题目中传递的参数是string类型,所以删除插入元素比一般数组方便,降低题目的难度,但也需要知道string类的一些常用成员函数。
2、思路很简单:将末尾元素复制取出来插入到第一个元素前面,然后删除末尾元素。但这里有一个小技巧:当str循环移动了它长度次数时,此时str恢复到未做任何移动的初始状态。
例如:str = "abc",此时str.length() = 3。第一次移动后,str = "cab",第二次移动后,str = "bca",第三次移动后,str = "abc"
3、对于输入参数异常的情况,要在一开始就处理好。
class Solution {
public:
/*
* @param str: An array of char
* @param offset: An integer
* @return: nothing
*/
void rotateString(string &str, int offset)
{
// write your code here
if(str.empty()) return;
if(offset == 0) return;
for(int i=1;i<=offset%str.length();i++)
{
string a = str;
const char * temp = &a[a.length()-1]; //复制取出最后一位元素
str.insert(0,temp); //将最后一位元素插入第一个位置
str.erase(str.end()-1,str.end()); //删除末尾的一个元素
}
}
};
4000
相关文章推荐
- [Lintcode]Rotate String 两步翻转法
- Lintcode: Rotate String
- LintCode: Rotate String
- lintcode-easy-Rotate String
- 【LintCode】Rotate String 旋转字符串
- LintCode 8. Rotate String
- lintcode做题总结, 题目Rotate String 8
- 【简单】Lintcode 53:Reverse Words in a String
- 【简单】Lintcode 46:Majority Number
- Rearrange a String With Integers-LintCode
- LintCode【简单】35. 翻转链表 。代码及思路
- 【LintCode 简单】138. 子数组之和
- 七.Spring的属性注入的方式-简单String类型
- String的Split方法简单使用和Jsoup获取url文档
- String,StringBuffer,StringBuilder简单对比
- 学了String写的一个简单的小功能。
- 【LintCode 简单】1. A + B 问题
- 字符串String的 简单处理
- 【LintCode 简单】749. John's backyard garden
- LintCode【简单】80. 中位数。代码及思路