剑指Offer之左旋转字符串(Move!Move!!Move!!!)

标签: 剑指Offer校园招聘面试
1332人阅读 评论(0) 收藏 举报
分类:

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


思路源于前一篇文章思路:反转单词顺序

【代码】

/*********************************
*   日期:2013-12-02
*   作者:SJF0115
*   题号: 题目1362:左旋转字符串(Move!Move!!Move!!!)
*   来源:http://ac.jobdu.com/problem.php?pid=1362
*   结果:AC
*   来源:剑指Offer
*   总结:
**********************************/
#include <stdio.h>
#include <malloc.h>
#include <string.h>

char *str;

//反转单词
void ReverseWord(char* words,int begin,int end){
    int temp;
    if(words == NULL || begin > end || begin < 0){
        return;
    }
    //反转
    while(begin < end){
        temp = words[begin];
        words[begin] = words[end];
        words[end] = temp;
        begin ++;
        end --;
    }
}

char* Reverse(char* str,int n){
    if(str == NULL || n < 0){
        return "";
    }
    int len = strlen(str);
    //分成两部分(1)前n项(2)剩余项
    //反转前n个
    ReverseWord(str,0,n-1);
    //反转剩余
    ReverseWord(str,n,len-1);
    //全部反转
    ReverseWord(str,0,len-1);
    return str;
}


int main() {
    int i,n;
    str = (char*)malloc(sizeof(char)*1001);
    while(scanf("%s",str) != EOF){
        scanf("%d",&n);
        //左旋转
        //注意一下n需要取余就可以了,不能超过字符串自身的长度
        n = n % strlen(str);
        str = Reverse(str,n);
        //输出
        for(i = 0;i < strlen(str);i++){
            printf("%c",str[i]);
        }
        printf("\n");
    }//while
    return 0;
}


1
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1118636次
    • 积分:18591
    • 等级:
    • 排名:第483名
    • 原创:619篇
    • 转载:132篇
    • 译文:49篇
    • 评论:164条
    博客专栏
    文章分类
    最新评论