左旋转字符串
来源:互联网 发布:linux怎么使用输入法 编辑:程序博客网 时间:2024/05/25 23:25
题目描述
汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!
分析:第一种方法:将字符串截取然后组合,但是过于简单,面试的时候还是考虑用第二种方法
第二种方法:
这道题考的核心是应聘者是不是可以灵活利用字符串翻转。假设字符串abcdef,n=3,设X=abc,Y=def,所以字符串可以表示成XY,如题干,问如何求得YX。假设X的翻转为XT,XT=cba,同理YT=fed,那么YX=(XTYT)T,三次翻转后可得结果。
原理:YX = (XTY T)T
class Solution {public: string LeftRotateString(string str, int n) { string tem="",res=""; for(int i=0; i<str.size(); ++i) { if(i<n) tem+=str[i]; else res+=str[i]; } res=res+tem; return res; }};
方法二:
//按照剑指offer书上的方法,两次翻转字符串。class Solution {public: string LeftRotateString(string str, int n) { reverse(str.begin(), str.end()); reverse(str.begin(), str.begin() + str.size() - n); reverse(str.begin() + str.size() - n, str.end()); return str; }};
阅读全文
0 0
- 左旋转字符串
- 左旋转字符串
- 左旋转字符串
- 左旋转字符串
- 左旋转字符串
- 26.左旋转字符串
- 第一章、左旋转字符串
- 字符串的左旋转
- 第一章、左旋转字符串
- 第一章、左旋转字符串
- 左旋转字符串
- 左旋转字符串
- 26、左旋转字符串
- 左旋转字符串
- 左旋转字符串
- 左旋转字符串
- 左旋转字符串
- 左旋转字符串
- MyBatis批量操作(mysql)
- 摩拜ofo挥师三四线市场 第二梯队面临"团灭"危机
- 一次一波三折的SQL优化经历
- 手淘互动动效的探索
- 【名师课堂】阿里免费分享Java高级开发
- 左旋转字符串
- java继承
- iOS storyboard国际化不识别问题
- leetcode 653. Two Sum IV
- easyUI onBeforeExpand获取不到数据
- javascript数组去重方法终极总结
- StartSSL nginx申请SSL证书
- 1226:首字母大写
- c#如何把List<>变成json