【剑指offer】面试题58-Ⅱ:左旋转字符串 ——C语言字符串的翻转

在这里插入图片描述

方法一: 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;
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值