【剑指offer】左旋转字符串

时间:2022-09-04 12:20:02

转载请注明出处:http://blog.csdn.net/ns_code/article/details/27366485

题目描写叙述:
汇编语言中有一种移位指令叫做循环左移(ROL),如今有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。比如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是非常easy?OK,搞定它!
输入:
多组測试数据,每一个測试数据包括一个字符序列S和非负整数K。当中S的长度不超过1000。
输出:
相应每一个測试案例,输出新序列。
例子输入:
UDBOJ 4
abba 1
例子输出:
JUDBO
bbaa

这道题之前在Cracking the Coding interview上做过相似的,一样的三次反转,就可以得到,时间复杂度为O(n),空间复杂度为O(1)。这道题在九度OJ上測试,主要要考虑移动的位数大于字符串长度时的情况,取余就可以。

AC代码例如以下:

#include<stdio.h>
#include<string.h> void Swap(char *a,char *b)
{
int temp = *a;
*a = *b;
*b = temp;
} /*
翻转字符串中从start到end的这部分
*/
void ReverseString(char *str,int start,int end)
{
while(start < end)
{
Swap(&str[start],&str[end]);
start++;
end--;
}
} /*
求左旋k位后得到的字符
*/
void ROLString(char *str,int k)
{
if(str == NULL || k<=0)
return; int len = strlen(str);
//要考虑k大于len的情况
k = k%len;
if(k == 0)
return; ReverseString(str,0,k-1);
ReverseString(str,k,len-1);
ReverseString(str,0,len-1);
} int main()
{
char str[1010];
int k;
while(scanf("%s %d",str,&k) != EOF)
{
ROLString(str,k);
puts(str);
}
return 0;
}
/**************************************************************
    Problem: 1362
    User: mmc_maodun
    Language: C
    Result: Accepted
    Time:60 ms
    Memory:912 kb
****************************************************************/

【剑指offer】左旋转字符串的更多相关文章

  1. 剑指Offer 左旋转字符串

    题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=”abc ...

  2. 剑指Offer——左旋转字符串

    题目描述: 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=”ab ...

  3. 剑指offer--38&period;左旋转字符串

    时间限制:1秒 空间限制:32768K 热度指数:173814 本题知识点: 字符串 题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果. ...

  4. 剑指Offer-43&period;左旋转字符串&lpar;C&plus;&plus;&sol;Java&rpar;

    题目: 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=”abcX ...

  5. 剑指offer42 左旋转字符串

    自己想的一个新的写法,如果不排除length=0的情况,下面那个while是死循环 class Solution { public: string LeftRotateString(string st ...

  6. 剑指Offer:旋转数组的最小数字【11】

    剑指Offer:旋转数组的最小数字[11] 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4 ...

  7. 《剑指offer》旋转数组中的最小数字

    本题来自<剑指offer> 旋转数组中的最小数字 题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例 ...

  8. ⛅剑指 Offer 11&period; 旋转数组的最小数字

    20207.22 LeetCode 剑指 Offer 11. 旋转数组的最小数字 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小 ...

  9. &lbrack;剑指 Offer 11&period; 旋转数组的最小数字&rsqb;

    [剑指 Offer 11. 旋转数组的最小数字] 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5, ...

  10. 剑指 Offer 67&period; 把字符串转换成整数 &plus; 字符串

    剑指 Offer 67. 把字符串转换成整数 Offer_67 题目描述 题解分析 java代码 package com.walegarrett.offer; /** * @Author WaleGa ...

随机推荐

  1. 如何通过阅读C标准来解决C语言语法问题

    有时候必须非常专注地阅读ANSI C标准才能找到某个问题的答案.一位销售工程师把下面这段代码作为测试用例发给Sun的编译小组. foo(const char **p) {} int main(int ...

  2. ios 多线程 面试

    1 多线程是什么  同步完成多项任务,提高了资源的使用效率,从硬件.操作系统.应用软件不同的角度去看,多线程被赋予不同的内涵,对于硬件,现在市面上多数的CPU都是多核的,多核的CPU运算多线程更为出色 ...

  3. RestTemplate 支持服务器内302重定向

    Stack Overflow 里找到的代码,可以正常返回服务器302重定向后的响应 final RestTemplate restTemplate = new RestTemplate(); fina ...

  4. 「Mobile Testing Summit China 2017」第三届中国移动互联网测试开发大会-讲师征集

    时至北京盛夏,一场由 TesterHome 主办的关于移动互联网测试技术的盛会正在紧锣密鼓的筹备中.只要你关注软件质量,热爱测试,期待学习,都欢迎你加入这次移动测试技术大会中和我们一起分享经验.探讨话 ...

  5. OC OD介绍

    参考:http://www.elecfans.com/baike/bandaoti/jichuzhishi/20100304178298.html OC门,又称集电极开路门,Open Collecto ...

  6. 创建react项目

    npm搭建React项目 React官网提供最简便的方法是使用create-react-app npx create-react-app my-app cd my-app npm start 也可以自 ...

  7. DHT

    DHT(Distributed Hash Table,分布式哈希表)类似Tracker的根据种子特征码返回种子信息的网络.DHT全称叫分布式哈希表(Distributed Hash Table),是一 ...

  8. yum 安装mysql数据库

    1.先查看是否有安装mysql,有的话通过yum remove mysql先卸载掉,卸载完成后执行 yum install -y mysql-server mysql mysql-deve 2.启动m ...

  9. asp&period;net Mvc 模型绑定项目过多会导致页面运行时间卡

    asp.net Mvc 模型绑定项目过多会导致页面运行时间卡的问题. 解决方式就是采用ModelView方式进行精简,已减少模型绑定及验证的时间.

  10. ubuntu 16&period;04 apt-get 更新使用中科大镜像源

    1 备份系统配置 sudo cp /etc/apt/sources.list /etc/apt/source.list.bak 2 编辑配置 sudo vi /etc/apt/sources.list ...