旋转字符串
给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转)
样例
对于字符串
"abcdefg".offset=0 => "abcdefg" offset=1 => "gabcdef" offset=2 => "fgabcde" offset=3 => "efgabcd"挑战
在数组上原地旋转,使用O(1)的额外空间
(1)Python程序:
class Solution:
def rotateString(self, str, offset):
a=str.copy()
j=0
if len(str)==0:
return
offset%=len(str)
for i in range(len(str)-offset,len(str)):
str[j]=a[i]
j+=1
for i in range(0,len(str)-offset):
str[j]=a[i]
j+=1
在Python中,对象赋值实际上是对象的引用。
- 若使用直接赋值(a=str),原始对象str改变,被赋值的a也会改变;
- 浅拷贝copy,没有拷贝子对象 a=str.copy;
- 深拷贝deepcopy,包含子对象的拷贝 from copy import deepcopy / a=deepcopy(str);
(2)C++程序:
class Solution {
public:
void rotateString(string &str, int offset) {
string a=str;
int i,j=0;
if(str.size()==0)
{
return;
}
offset%=a.size();
for(i=str.size()-offset;i<str.size();i++)
{
str[j++]=a[i];
}
for(i=0;i<str.size()-offset;i++)
{
str[j++]=a[i];
}
}
};
本文详细介绍了一种旋转字符串的算法,包括Python和C++两种语言的实现方式。文章首先介绍了算法的基本概念,然后通过实例展示了如何根据给定的偏移量旋转字符串。最后,提供了挑战性的目标,即如何在不使用额外空间的情况下,在数组上原地旋转字符串。
1470

被折叠的 条评论
为什么被折叠?



