方法一: substr
字符串分割从n开始的字符加上从0开始n位的字符相加。
class Solution {
public:
string reverseLeftWords(string s, int n) {
string str = s.substr(n) + s.substr( 0, n ) ;
return str;
}
};
方法二:三次翻转(原地操作)
class Solution {
public:
string reverseLeftWords(string s, int n) {
reverse( s.begin(), s.begin() + n );
reverse( s.begin() + n, s.end() );
reverse( s.begin(), s.end() );
return s;
}
};
C语言实现字符串的翻转
#include "stdio.h"
#include "string.h"
void Reverse(char* pbegin, char* pend)
{
if( pbegin == NULL || pend == NULL )
return;
while( pbegin < pend )
{
char temp = *pbegin;
*pbegin = *pend;
*pend = temp;
pbegin++;
pend--;
}
}
int main(int argc, char* argv[])
{
char str[] = "abcdefg";
int n = 2;
char *pFirstBegin = str;
char *pFirstEnd = str + n - 1;
char *pSecondBegin = str + n;
char *pSecondEnd = str + strlen(str) - 1;
printf("PRE:%s\n", str);
Reverse(pFirstBegin, pFirstEnd);
Reverse(pSecondBegin, pSecondEnd);
Reverse(pFirstBegin, pSecondEnd);
printf("RESULT:%s\n", str);
getchar();
return 0;
}