循环移位
来源:互联网 发布:上瘾网络剧秒拍视频 编辑:程序博客网 时间:2024/04/29 12:08
题目要求:
将字符串str进行循环移位,要求算法空间复杂度O(1),时间复杂度O(n)
思路:
假设str需要循环移位k位,则将其分为前后两部分,分别长k和n-k,称AB
则循环移位的过程即为XY->YX. 可由XT即转置完成,(XTYT)T=(YT)T(XT)T=YX
实现如下:
/* * Reverse_String.cpp * * Created on: May 22, 2012 * Author: Rachel */#include"stdio.h"#include"string.h"void Reverse(char* str, int s, int e){ char tmp; while (s < e) { tmp = str[s]; str[s] = str[e]; str[e] = tmp; s++; e--; }}void RightReverse(char* str, int k, int n){ if (k > 0 && n > 0)//avoid exception { Reverse(str, 0, k - 1); Reverse(str, k, n - 1); Reverse(str, 0, n - 1); printf("%s\n", str); }}int main(){ char str[25]; int k, n; while (scanf("%s%d", str, &k) != EOF) { n = strlen(str); if (k > n) k %= n; RightReverse(str, k, n); }}
0 0
- 循环移位
- 循环移位
- 循环移位
- 循环移位
- 循环移位
- 循环移位
- 循环移位
- 循环移位
- 循环移位
- 移位和循环指令
- 循环移位的实现
- 数组循环移位算法
- 数组循环移位问题
- 数组循环移位
- 数组循环移位
- 数组循环移位
- 数组循环移位(转)
- 一劳永逸---循环移位操作
- asp.net web应用程序后台弹出提示框代码
- Linux常用命令英文全称与汉语解释
- 面试 需要注意三种公司
- spring框架学习(四)自动装配
- 基于AVR单片机: 两轮自平衡智能车
- 循环移位
- oracle中exp,imp的使用详解
- oracle 创建表空间
- C++学习[1] 字符串
- Json的规格非常简单
- 豪鹫闲谈:IBM x3650 m4服务器安装centos6.4系统
- Import Data from Excel to SQL Server
- 数据类型和Json格式
- Log4J使用实例---日志进行邮件发送或是存入数据库