剑指offer——58.2 左旋转字符串 发表于 2020-02-15 | 分类于 算法 , 剑指offer | 字数统计: 227 | 阅读时长 ≈ 1 剑指offer刷题 58.2 左旋转字符串NowCoder 题目描述123456Input:S="abcXYZdef"K=3Output:"XYZdefabc" 解题思路先将 “abc” 和 “XYZdef” 分别翻转,得到 “cbafedZYX”,然后再把整个字符串翻转得到 “XYZdefabc”。 123456789101112131415161718192021222324252627282930313233/*输入:"abcdefg" , n=2考虑先将字符串倒个 "gfedc ba" 可以尝试两次倒装输出:"cdefgab"*/#if 1 //使用库函数class Solution {public: string leftRotateString(string str, int n) { if(str.empty() || n < 0 || n > str.size()) return str; for(int i = 0, j = str.size() - 1; i < j; i ++, j --) swap(str[i], str[j]); for(int i = 0, j = str.size() - n - 1 ; i < j; i ++, j --) swap(str[i], str[j]); for(int i = str.size() - n, j = str.size() - 1; i < j; i ++, j --) swap(str[i], str[j]); return str; }};#endif#if 0 //使用库函数class Solution {public: string leftRotateString(string str, int n) { if(str.empty() || n < 0 || n > str.size()) return str; reverse(str.begin(), str.end()); reverse(str.begin(), str.end() - n); //左闭区间 右开 reverse(str.end() - n, str.end()); return str; }};#endif 创作不易,欢迎打赏! 打赏 微信支付 支付宝 -------------本文结束感谢您的阅读-------------