例如:给定s1=AABCD和s2=BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0.AABCD左旋一个字符得到ABCDAAABCD左旋两个字符得到BCDAAAABCD右旋一个字符得到DAABCAABCD右旋两个字符得到CDAAB分析题目之后我们发现,一个字符串有左旋转和右旋转两种。左旋转之后的字符串在原字符串拼接..
分类:
编程语言 时间:
2015-09-14 00:46:26
阅读次数:
346
汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!思路:三次...
分类:
其他好文 时间:
2015-09-02 01:48:47
阅读次数:
213
题目描述给定一个字符串,要求把字符串前面的若干个字符移动到字符串的尾部,如把字符串“abcdef”前面的2个字符'a'和'b'移动到字符串的尾部, 使得原字符串变成字符串“cdefab”。请写一个函数完成此功能,要求对长度为n的字符串操作的时间复杂度为 O(n),空间复杂度为 O(1)。分析与解法对...
分类:
其他好文 时间:
2015-08-13 13:51:10
阅读次数:
90
/************************************************************************************
4.判断一个字符串是否为另外一个字符串旋转之后的字符串。
例如:给定s1=AABCD和s2=BCDAA,返回1,
给定s1=abcd和s2=ACBD,返回0.
AABCD左旋一个字符得到ABCDA
AABCD左旋两个字符得..
分类:
编程语言 时间:
2015-08-09 18:58:47
阅读次数:
237
手摇算法(也叫三次反转算法)
看题:将字符串abcdefg,变成efgabcd,要求空间复杂度O(1)。
解答:
第一步:将子串abcd反转,变成dcba。源字符串变成dcbaefg第二步:将字串efg反转,变成gfe。源字符串变成dcbagfe第三步:将整个字符串dcbagfe反转,变成efgabcd。
手摇算法常常被用来旋转字符串。同时,手摇算法也可以用来做原地归并...
分类:
编程语言 时间:
2015-07-31 10:37:41
阅读次数:
189
全部内容来自《剑指offer》。题目一: 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字符一样处理。例如输入字符串“I am a student.”,则输出“student. a am I”。ANSWER:void reverse(char *pB...
分类:
其他好文 时间:
2015-07-18 19:59:43
阅读次数:
177
要求时间对长度为n的字符串操作的复杂度为O(n),辅助内存为O(1)...
分类:
其他好文 时间:
2015-07-12 23:25:02
阅读次数:
382
void Reverse(char* pBegin, char* pEnd)
{
if (pBegin == NULL || pEnd == NULL)
return;
while (pBegin
{
char temp = *pBegin;
*pBegin = *pEnd;
*pEnd = temp;
pBegin++, pEnd--;
}
}
char*...
分类:
其他好文 时间:
2015-07-11 09:17:52
阅读次数:
187
问题描述定义字符串的左旋转操作:将字符串前面的若干个字符移动到字符串的尾部。例如,字符串“abcdef”左旋转2位得到“cdefab”。要求实现的算法时间复杂度为O(n),常数级空间复杂度。解决思路整体翻转+部分翻转程序public class LeftRotateString { public v...
分类:
其他好文 时间:
2015-07-10 10:43:28
阅读次数:
103
//判断一个字符串是否是一个字符串的旋转字符串
//利用库函数实现
#include
#include
#include
int IsRotate(char *str1, const char *str2)
{
assert(str1);
assert(str2);
strncat(str1, str1,strlen(str1));
if (NULL == strstr(str1, ...
分类:
编程语言 时间:
2015-07-04 11:20:31
阅读次数:
211