剑指offer——面试题42-1:左旋转字符串

20180906整理

Solution1:

自己最开始想出来的垃圾算法!!!

class Solution {public:string LeftRotateString(string str, int n) {int i = 0;for(i = 0; i < n; i++) {LeftMoveOne(str);}return str;}void LeftMoveOne(string &str){char temp = str[0];for(int i = 1; i < str.size(); i++)str[i-1] = str[i];str[str.size() - 1] = temp;return;}
};

Solution2:

20180906重做。此算法稍好一点

class Solution {public:string LeftRotateString(string str, int n) {if (str.size() <= 1 || n == 0) return str;int mod = n % str.size();if (!mod) return str;return str.substr(mod) + str.substr(0, mod);}
};

再稍微改进一点点。。

class Solution {public:string LeftRotateString(string str, int n) {int len = str.length();if(len == 0) return "";n = n % len;str += str;return str.substr(n, len);}
};

Solution3:

比较巧妙的一种算法,主要考察三次翻转。
原理:YX=(XTYT)TYX=(XTYT)TYX = (X^TY^T)^T
PS:这种描述原理的方式还真是简单粗暴,清晰易懂~~~

class Solution {public:string LeftRotateString(string str, int n) {if (str.size() <= 1 || n == 0) return str;int mod = n % str.size();if (!mod) return str;reverse(str.begin(), str.begin() + mod);reverse(str.begin() + mod, str.end());reverse(str.begin(), str.end());return str;}
};

剑指offer——面试题42-1:左旋转字符串相关推荐

  1. 剑指Offer - 面试题58 - II. 左旋转字符串

    1. 题目 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部.请定义一个函数实现字符串左旋转操作的功能.比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转 ...

  2. 剑指offer 面试题58 - II. 左旋转字符串

    字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部.请定义一个函数实现字符串左旋转操作的功能.比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结 ...

  3. 剑指offer面试题58 - II. 左旋转字符串(切片)(一行代码)

    题目描述 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部.请定义一个函数实现字符串左旋转操作的功能.比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两 ...

  4. [剑指offer]面试题42:翻转单词顺序 VS左旋转字符串

    面试题42:翻转单词顺序 VS左旋转字符串 题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.为简单起见,标点符号和普通字母一样处理.例如输入字符串"I am a st ...

  5. 剑指offer面试题[42]-反转单词顺序VS左旋转字符串

    题目1: 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=&quo ...

  6. 剑指offer面试题42. 连续子数组的最大和(动态规划)

    题目描述 输入一个整型数组,数组里有正数也有负数.数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值. 要求时间复杂度为O(n). 思路 详见链接 代码 class Solution: ...

  7. [剑指offer]面试题第[38]题[JAVA][字符串的排列][回溯法]

    [问题描述][中等] 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素.示例: 输入:s = "abc" 输出:[&quo ...

  8. 剑指Offer - 面试题5. 替换空格(字符串)

    1. 题目 请实现一个函数,把字符串 s 中的每个空格替换成"%20". 示例 1: 输入:s = "We are happy." 输出:"We%20 ...

  9. 剑指offer面试题[54]-表示数值的字符串

    题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123","3.1 ...

最新文章

  1. 如何学习Python开源项目代码
  2. Android Studio中ButterKnife插件的安装与使用
  3. centos6.8安装完成后重启进不去登录界面_如何在Ubuntu18.04上安装Unity桌面环境?
  4. TensorFlow RNN tutorial解读
  5. C++不能被声明为虚函数
  6. CentOS 6.5 生产环境编译安装LNMP
  7. 柏林噪声实践 水与火,顶点纹理拾取
  8. GDAL书籍中删除数据勘误(C#语言)
  9. python3 将列表中元素转化为字典_软件测试学Python(七):Python中的变量和标准数据类型...
  10. SharePoint 2010 中有个新的列表模板“导入电子表格”可以直接导入Excel数据并创建为列表 ....
  11. java 堆有多少个_Java堆内存的十个要点
  12. 优雅的对 list 遍历进行 add 或者 remove 操作
  13. iOS开发之UIPopoverController
  14. java kind con,java.lang.ClassNotFoundException:afu.com.sun.source.tree.tree$kind
  15. 【Transformers】第 1 章:从Bag-of-Words到Transformer
  16. DirectShow源码下载
  17. 软考中级网络工程师怎么复习?
  18. Win10释放C盘空间的一些办法
  19. 海思Hi3559V200运动相机、流媒体后视镜开发板防雷防静电推荐图
  20. 如何设置苹果手机铃声

热门文章

  1. 数据结构上机实践第三周项目3- 求集合并集
  2. bat 调用class文件_Logback 配置文件这么写,TPS 提高 10 倍!
  3. 安装慢_python安装第三方库太慢,很容易失败报错?教你如何提速
  4. iphone电压测试软件,电压电击iPhone结果会怎样? 通过测试后, 照样可以正常开机...
  5. 开关电源模块并联供电系统_你了解UWE/F_S-1/3WR3系列小功率模块电源吗?
  6. gedit 可以实现的更多功能插件
  7. 关于selenium关闭chrome密码登录时弹出的密码提示框
  8. vue.3.0 dom赋值_Vue3.0的几大新特性
  9. Python数据结构与算法(2.3)——链表
  10. django模型_Django模型