zoukankan      html  css  js  c++  java
  • 剑指Offer42 左旋字符串

     1 /*************************************************************************
     2     > File Name: 42_LeftRotateString.c
     3     > Author: Juntaran
     4     > Mail: JuntaranMail@gmail.com
     5     > Created Time: 2016年09月04日 星期日 16时31分43秒
     6  ************************************************************************/
     7 
     8 #include <stdio.h>
     9 #include <string.h>
    10 
    11 // 反转单词
    12 void ReverseWord(char* left, char* right)
    13 {
    14     if (left== NULL || right==NULL)
    15         return;
    16     while (left < right)
    17     {
    18         char temp = *left;
    19         *left = *right;
    20         *right = temp;
    21         
    22         left ++;
    23         right --;
    24     }
    25 }
    26 
    27 void LeftRotateString(char* str, int n)
    28 {
    29     if (str == NULL || n<=0)
    30         return str;
    31     
    32     int length = strlen(str);
    33     // n可能超过字符串长度
    34     n = n % length;
    35     
    36     // 第一部分
    37     char* FirstStart = str;
    38     char* FirstEnd   = str + n - 1;
    39     
    40     // 第二部分
    41     char* SecondStart = str + n;
    42     char* SecondEnd   = str + length - 1;
    43     
    44     // 先反转第一部分
    45     ReverseWord(FirstStart, FirstEnd);
    46     // 再反转第二部分
    47     ReverseWord(SecondStart, SecondEnd);
    48     // 整体反转
    49     ReverseWord(FirstStart, SecondEnd);
    50 }
    51 
    52 int main()
    53 {
    54     char str[] = "abcdefg";
    55     int n = 9;
    56     
    57     LeftRotateString(str, n);
    58     printf("%s
    ", str);
    59 }
  • 相关阅读:
    23.Vue技术栈开发实战-Icon组件
    shell脚本每行后面多了一个^M的原因和解决办法
    mmap概述
    camera otp介绍
    brk实现
    USB技术浅析
    带你遨游USB世界
    echarts 更换主题颜色
    Hive UDAF介绍与开发
    2020湖北高考理科第一名唐楚玥的学习方法演讲
  • 原文地址:https://www.cnblogs.com/Juntaran/p/5839781.html
Copyright © 2011-2022 走看看