将一个长度为n的字符串向左循环移动m位
2011-09-08 11:52
204 查看
// 将一个长度为n的字符串向左循环移动m位,如:hello,world向左移动3位就变成了lo,worldhel // 思路:把字符串切成长为m和n-m的两半,先分别对两部分进行逆序,最后对整个字符串逆序。 #include <iostream> using namespace std; void ReverseString(char * const str, const int count); void RotateLeft(char *str, int num); int _tmain(int argc, char *argv[]) { char str[] = "hello,world"; RotateLeft(str, 3); cout << str << endl; getchar(); return 0; } void ReverseString(char * const str, const int count) { if (str == NULL || count < 2) { return; } char *start = str; char *end = str + count - 1; char tmp; while (end > start) { tmp = *end; *end = *start; *start = tmp; start++; end--; } } void RotateLeft(char *str, int num) { if (str == NULL || num < 1) { return; } int length = (int)strlen(str); num = (num + length) % length; char *left = str; char *right = str + num; ReverseString(left, num); ReverseString(right, length - num); ReverseString(str, length); }
相关文章推荐
- 将一个长度为n的字符串向左循环移动m位
- 将一个字符串不使用额外容器向左移动M位
- 一个字符串,不用循环,不用库函数,求长度
- 一个字符串,不用循环,不用库函数,求长度
- 对于一个字符串,设计一个算法,将包括i位置在内的左侧部分移动到右边,将右侧部分移动到左边。给定字符串A和它的长度n以及特点位置p,请返回旋转后的结果。
- 将一篇文章的按单词倒序,将一个字符串向左循环移动
- 写一个函数,用来把一个字符串用指定的字符作为分隔符分割成若干个子串输出 | 写一个函数,用来返回一个字符串中重复出现的最长字串的长度及其开始地址
- 请一个在字符串中找出连续最长的数字串,并把这个串的长度返回;如果存在长度相同的连续数字串,返回最后一个连续数字串
- JS获取字符串长度,一个中文算两个字符。
- 循环向右移动字符串
- windows客户端开发--如何测量一个字符串显示的物理长度
- GO语言基础-for语句特性,字符串循环的一个小问题
- php把一个字符串分割成字符数组(可以用参数指定数组每个元素字符的长度)
- 用程序生成一个长度至少为10^5的字符串
- 华为机试题:输入两个超长整型构成的字符串,其间使用一个空格分隔,每个字符串最大长度为100个字符。求第一个整数除以第二个整数以后的余数。。
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- 把一个数组向右循环移动k位要求时间复杂度为O(n)
- JS获取一个字符串的字节长度
- 字符串循环移动
- JAVA中查询一个词在内容中出现的次数、判断集合中是否包含关键字、查询字符串数组单个字符的长度