假设字符串:abcdefg
左循环两位:cdefgab
右循环两位:fgabcde
规律: AB->BA==((A的反转)(B的反转))的反转=(B的反转)的反转(A的反转)的反转=BA
1
//
将一个字符串中某个子串反序
2
void
reverseOrder(char
* str, int
p, int
q)
3
{
4
char
temp;
5
while
(p < q)
6
{
7
temp = str[p];
8
str[p] = str[q];
9
str[q] = temp;
10
p ++;
11
q --;
12
}
13
}
14
void
shift_n(char
* str, int
n)
15
{
16
if
( !str)
17
return
;
18
int
len = strlen(str);
19
int
t = n % len;//循环移动的位数大于字符串的长度
20
reverseOrder(str, 0
, len - t -1
);
21
reverseOrder(str, len - t, len -1
);
22
reverseOrder(str, 0
, len -1
);
23
}
对于左循环:A=ab;B=cdefg;
对于右循环:A=abcde;B=fg;
对于上面的算法左右循环是相同的,只是AB字符串的划分不同而已。
发表评论
-
析构函数为虚函数的原因
2012-09-09 11:42 840我们知道,用C++开发的时候,用来做基类的类的析构函数 ... -
hash的应用
2012-08-31 23:02 966第一部分为一道百度面试题Top K算法的详解;第二部分为关 ... -
微软智力题
2012-08-29 19:59 573第一组1.烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有 ... -
C++不能被继承的类
2012-08-27 20:16 1063一个类不能被继承, ... -
括号对齐问题
2012-08-27 10:47 1415解法一:左右括号成一对则抵消 可以 ... -
树的遍历
2012-08-19 10:43 722/****************************** ... -
堆排序
2012-08-16 14:24 886堆:(二叉)堆数据结构是一种数组对象。它可以被视为一棵完全 ... -
多态赋值
2012-08-14 16:16 834#include <iostream> usi ... -
static变量与static函数(转)
2012-08-13 10:15 749一、 static 变量 static变量大致分为三种用法 ... -
不用sizeof判断16位32位
2012-08-10 15:21 1707用C++写个程序,如何判断一个操作系统是16位还是3 ... -
找出连续最长的数字串(百度面试)
2012-08-09 15:15 1152int maxContinuNum(const char*in ... -
顺序栈和链栈
2012-08-06 10:01 803顺序栈:话不多说直接上代码 #include ... -
队列的数组实现和链表实现
2012-08-05 16:20 1028话不多少,数组实现上代码: #include<i ... -
KMP算法详解
2012-08-02 21:40 890KMP算法: 是在一个“主文本字符串” ... -
字符串的最长连续重复子串
2012-08-01 15:05 9783两种方法: 循环两次寻找最长的子串: <方法一> ... -
寻找一个字符串连续出现最多的子串的方法(转)
2012-07-31 21:19 1000算法描述首先获得后缀数组,然后1.第一行第一个字符a,与第二行 ... -
一次谷歌面试趣事(转)
2012-07-31 15:26 774很多年前我进入硅谷 ... -
约瑟夫环问题(循环链表)
2012-07-30 21:31 1296题目描述:n只猴子要选大王,选举方法如下:所有猴子按 1, ... -
面试之单链表
2012-07-30 20:18 7301、编程实现一个单链表的建立/测长/打印。 ... -
多重继承内存地址问题
2012-07-30 15:55 730[cpp] view plaincopy ...
相关推荐
首先,让我们来解决字符串循环右移的问题。方法一:利用已有的字符串函数。我们可以使用strcpy函数和strlen函数来实现字符串的循环右移。下面是具体的实现代码: ```c void rightloop(char *a, int n) { char b...
自定义字符串整体循环移位
插入排序、一个英文句子单词逆转,字符串循环移位、去重、全排列算法(递归和非递归实现)、KMP算法
内容概要:本文介绍了字符串循环左移的概念和方法。文中详细讲解了如何通过字符串截取与拼接的方法来实现字符串的循环左移,并提供了Java示例代码展示实现细节。对于超出字符串长度的移位操作,通过对移位数取模进行...
代码如下所示: 代码如下:/************************************************************************//* 给定两个字符串s1和s2,要求判定s2是否能被s1做循环移位得到的字符串所包含例如,给定s1 = AABCD, s2 = ...
本文实例为大家分享了python字符串循环左移的具体代码,供大家参考,具体内容如下 字符串循环左移 给定一个字符串S[0…N-1],要求把S的前k个字符移动到S的尾部,如把字符串“abcdef”前面的2个字符‘a’、‘b’移动...
本篇文章将详细探讨字符串操作相关的知识点,重点讲述字符串循环左移、全排列问题及其解决方案。 首先,字符串循环左移问题是指将一个字符串S的前k个字符移动到字符串的尾部,例如字符串“abcdef”前两个字符“ab”...
本文档是一份PPT学习教案,旨在指导学习者通过最小表示法来应对字符串循环同构问题。 循环同构,顾名思义,是指在对字符串执行循环移位操作后能够得到另一个字符串的情况。例如,字符串"s1 = 'a b c d'"经过一次...
1. **字符串循环左移**:这是一个常见的字符串操作,要求将字符串的前k个字符移到末尾。例如,字符串"abcdef"循环左移2位变为"cdefab"。实现这个操作的高效方法是在O(n)的时间复杂度和O(1)的空间复杂度内完成。暴力...
1. **O(n * m)的轮询方法**:这是最直观的解决办法,通过两层循环遍历两个字符串,时间复杂度为O(n * m),其中n是主串长度,m是子串长度。虽然简单,但在数据量较大时效率较低。 ```cpp // 简单示例代码 for (int i...
### 步骤1:检查字符串是否互为对方的循环移位 ```cpp if((str1 + str2) != (str2 + str1)) return ""; ``` 这一步检查 `str1` 是否可以通过将 `str2` 循环移位后与之相等。如果不能,那么它们没有公共因子,返回空...
1. **构造矩阵**:将输入字符串循环移位后形成的字符串集合组成一个 N×N 的矩阵。 2. **排序矩阵**:将矩阵按行进行排序。 3. **获取最后一列**:从排序后的矩阵中提取最后一列作为变换结果的一部分。 **第二步:...
字符串循环同构问题是计算机科学中一个经典的算法问题,它在数据结构和模式匹配领域中占有重要的地位。在实际应用中,如文档处理、生物信息学中的基因序列分析、网络安全等领域,这一问题都有广泛的应用。解决这一...
这个项目展示了如何在汇编语言环境下实现字符串的动态显示,以及如何利用位移操作(左移位和右移位)创建动画效果。在实际操作中,汇编语言编程需要对处理器的工作方式有深入理解,包括段寄存器的使用、BIOS 服务...
总结来说,"vc++链表"这个主题涵盖了链表的基本概念、链表的实现、链表操作以及如何在VC++环境中使用链表解决实际问题,如汉诺塔问题和字符串循环移位。理解并熟练掌握这些知识对于进行高效的程序设计和算法实现至关...
标题"**C++ 计算字符串md5_16和md5_32**"指的可能是在C++编程环境中实现计算字符串的MD5值,通常MD5值为32位的十六进制数,但有时为了简洁,可能会只取前16位。这两种形式都是MD5的简化表示,不过16位的形式可能会...
这些运算包括位操作、循环移位、加法和异或等。MD5算法的目的是使得即使只改变输入的一小部分,也会导致输出的散列值发生显著变化,这种特性称为雪崩效应。 32位MD5哈希值是完整的MD5散列结果,它以小写或大写字母...
解决这个问题需要深刻理解字符串移位的性质,尤其是循环节的概念。我们可以通过分析字符串的最小循环节来判断其字典序的大小,并通过数学计算来确定排名和出现次数。 最后,我们来讨论一下**拼写检查**的问题。POJ ...
自己编写的一种简单加密解密算法,通过把多种算法进行组合。特点是同个字符串不同时间加密结果不同,混合了多种加密方式,很难用统计的方式对密文进行破解。 加密过程: ...5)整个字符串循环移位