zoukankan      html  css  js  c++  java
  • 将一个字符串循环左移index个位置

    #include <stdio.h>
    #include 
    <string.h>

    #define NMAX 1000

    void RotateVector(char arr[], unsigned int index, unsigned int n);

    int main()
    {
        
    char str[NMAX];
        unsigned 
    int i, n;

        printf(
    "Input a string for rotating left.\n");
        fgets(str, NMAX, stdin);

        n 
    = strlen(str) - 1;
        str[n] 
    = '\0';

        printf(
    "%d chars in the string.\n", n);
        printf(
    "How many position (i) to rotate?\n");
        scanf(
    "%u"&i);

        RotateVector(str, i, n);
        printf(
    "After rotated %d positions\n", i);
        printf(
    "%s\n", str);

        
    return 0;
    }


    /*Rotate the vector string arr by index positions.*/
    void RotateVector(char arr[], unsigned int index, unsigned int n)
    {
        unsigned 
    int i, j;
        
    char t;

        index 
    %= n;

        
    if (index == 0{
            
    return;
        }


        
    /*Reverse 'arr' in range between 0 and index-1*/
        
    for(i = 0, j = index-1; i < j; i++, j--{
            t 
    = arr[i];
            arr[i] 
    = arr[j];
            arr[j] 
    = t;
        }


        
    /*Reverse 'arr' in range between index and n-1*/
        
    for(i = index, j = n-1; i < j; i++, j--{
            t 
    = arr[i];
            arr[i] 
    = arr[j];
            arr[j] 
    = t;
        }


        
    /*Reverse 'arr' in range between 0 and n-1*/
        
    for(i = 0, j = n-1; i < j; i++, j--{
            t 
    = arr[i];
            arr[i] 
    = arr[j];
            arr[j] 
    = t;
        }

    }

    算法非常简单,也非常好实现,执行效率也很高,时间复杂度为O(n),空间复杂度仅为O(1) 。

  • 相关阅读:
    05-删除提示
    04-setTimeout
    03-页面加载事件
    02-对话框
    01-window
    18-选择水果
    17-元素操作的方法
    13-动态创建表格
    【数据库】SQL必知必会复习
    【数据库】JDBC课设(2)addbatch批处理SQL语句
  • 原文地址:https://www.cnblogs.com/Henrya2/p/1400044.html
Copyright © 2011-2022 走看看