58Ⅱ.左旋转字符串
小于 1 分钟
58Ⅱ.左旋转字符串
参考链接
剑指 Offer 58 – II. 左旋转字符串-跟着帅地玩转校招,刷爆各类算法题帅地玩Offer
个人尝试
class Solution {
public String dynamicPassword(String password, int target) {
StringBuilder sb = new StringBuilder();
sb.append(password.substring(target, password.length()));
sb.append(password.substring(0, target));
return sb.toString();
}
}
优秀题解
zhedahht/CodingInterviewChinese2: 《剑指Offer:名企面试官精讲典型编程面试题》第二版源代码
/*******************************************************************
Copyright(c) 2016, Harry He
All rights reserved.
Distributed under the BSD license.
(See accompanying file LICENSE.txt at
https://github.com/zhedahht/CodingInterviewChinese2/blob/master/LICENSE.txt)
*******************************************************************/
//==================================================================
// 《剑指Offer——名企面试官精讲典型编程题》代码
// 作者:何海涛
//==================================================================
char* LeftRotateString(char* pStr, int n)
{
if(pStr != nullptr)
{
int nLength = static_cast<int>(strlen(pStr));
if(nLength > 0 && n > 0 && n < nLength)
{
char* pFirstStart = pStr;
char* pFirstEnd = pStr + n - 1;
char* pSecondStart = pStr + n;
char* pSecondEnd = pStr + nLength - 1;
// 翻转字符串的前面n个字符
Reverse(pFirstStart, pFirstEnd);
// 翻转字符串的后面部分
Reverse(pSecondStart, pSecondEnd);
// 翻转整个字符串
Reverse(pFirstStart, pSecondEnd);
}
}
return pStr;
}