《编程之法》学习笔记
ice_camel
这个作者很懒,什么都没留下…
展开
-
字符串的旋转
题目描述给定一个字符串,要求将字符串的前若干(m)位字符移动到字符串的尾部。**例如**:将字符串"abcdef"的前3个字符'a'、'b'和'c'移到字符串的尾部,得到"defabc"。解法一:n轮移动,每轮中将每个字符左移一位。 时间复杂度:O(mn); 空间复杂度:O(1)void leftRotateString_1(string &str, int m){ if (m <原创 2015-12-23 00:19:00 · 563 阅读 · 0 评论 -
字符串的包含
题目描述 给定一个字符串a和一短字符串b,只包含小写字母,判断b中元素是否都在a中?a是”abcd”,b是”bad”,答案是truea是”abcd”,b是”bce”,答案是falsea是”abcd”,b是”aa”,答案是true解法一:蛮力轮询 轮询字符串b中每个字符,逐一与a中字符比较。 时间复杂度:O(nm); 空间复杂度:O(1)C++代码:bool stringContain_原创 2015-12-24 00:33:41 · 1018 阅读 · 1 评论 -
字符串的全排列
题目描述 输入一个字符串,打印出该字符串中字符的全排列。解法一:递归实现 从未打印字符中选择一个打印,递归打印剩余字符。具体实现:将要打印的字符移动到剩余字符串的头部,递归至没有剩余字符时一起全部打印。 C++代码:void permutation(string &str, int start){ if (start == str.size()) { cout <<原创 2015-12-24 19:12:00 · 478 阅读 · 0 评论