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 }
  • 相关阅读:
    三维几何模板
    凸包
    计算几何 部分模板
    几何模板
    高斯消元模板
    tarjin求割点
    在无向图中找最短桥(tarjan)
    线段树
    错排问题
    NABCD分析
  • 原文地址:https://www.cnblogs.com/Juntaran/p/5839781.html
Copyright © 2011-2022 走看看