题目描述:

题解:
意思就是把前面的n个字符串移到字符串的尾部,剩下的字符前移,可以再开辟一个数组进行解题,但是也可以运用先局部翻转再整体翻转的方法。

这样就是一个空间复杂度只有O(1)的做法。
void reverse(char* s,int head,int tail)
{
int size=tail-head+1;
for(int i=0;i<size/2;i++)
{
char temp=s[head];
s[head]=s[tail];
s[tail]=temp;
head++;
tail--;
}
}
char* reverseLeftWords(char* s, int n)
{
int size=strlen(s);
reverse(s,0,n-1);
reverse(s,n,size-1);
reverse(s,0,size-1);
return s;
}
该文章介绍了一种方法,通过局部和整体翻转字符串来将前n个字符移动到字符串尾部,同时保持其余字符前移,从而达到目标效果。这个解决方案的关键在于使用了三次翻转操作,且在处理过程中只使用常量级额外空间,实现了O(1)的空间复杂度。
4万+

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



