zoukankan      html  css  js  c++  java
  • 字符串旋转

    这个问题在很多书上都看到,只是后悔没早点看到...

    例如在《编程珠玑》,在《编程之美》,还在,有研究生入学考试里...

     1 #include "stdafx.h"
     2 #include <stdio.h>
     3 #include <string>
     4 
     5 //这种方法太浪费空间了,用了额外n个空间
     6 void reverseStr(char *str,int n)
     7 {
     8     char* tmp = (char*)malloc(n*sizeof(char)) ;//定义n个临时空间存入要旋转的元素
     9     unsigned int length = strlen(str);
    10     int i ;
    11     for( i = 0 ; i < n ; i++ )
    12         tmp[i] = str[i];
    13     for(  i = 0 ; i < length ;i++ )
    14     {
    15          str[i] = str[i+n]; 
    16     }
    17     for( i=0;i < n;i++ )
    18         str[ length-i-1 ]=tmp[ n-i-1 ];
    19 }
    20 
    21 
    22 //这种方法太浪费时间了,因为循环了3次
    23 void reverseStr2(char* str , int n)
    24 {
    25     //将字符串旋转
    26     char tmp ; 
    27     unsigned int length = strlen(str);
    28     for( int i = 0 ; i < n ; ++i )
    29     {
    30         tmp = str[0];
    31         int j ; 
    32         for( j = 0 ; j < length ; j++ )
    33         {
    34             str[j] = str[j+1];
    35         }
    36         //这里需要注意j
    37         str[j-1] = tmp ; 
    38     }
    39 }
    40 
    41 void reverseI(int begin,int end,char* str)
    42 {
    43      char tmp ; 
    44      while( begin < end )
    45      {
    46          tmp = str[begin] ; 
    47          str[begin] = str[end] ;
    48          str[end] = tmp ;
    49          begin++;end--;
    50      }
    51 }
    52 void reverseStr_Best(char* str , int n )
    53 {
    54     //递归调用reverseI
    55     //翻转左边,进行交叉对换
    56     reverseI(0,n-1,str);
    57     //翻转右边
    58     reverseI(n,strlen(str)-1,str);
    59     //再进行一次整体翻转
    60     reverseI(0,strlen(str)-1,str);
    61     
    62 }
    63 
    64 
    65 int _tmain(int argc, _TCHAR* argv[])
    66 {
    67     // char* str= "abcdefg" ; 注意!这里str指向的是常量字符串,不可改变
    68     char str[] = "abcdefg";
    69     reverseStr_Best(str , 4);
    70     printf("str:%s",&str);
    71     getchar();
    72     return 0;
    73 }
  • 相关阅读:
    SoundTouch
    80211
    netsh wlan
    jest--cmd
    必须精通nuxt了,不可变,to thi
    bili实际的ssr
    vscode 调试vuetify
    【Java】 第四章 异常处理 Notes learn Ma
    Windows 下的符号链接 小示例
    Java 第一二章 配置基础 与 java 数据类型
  • 原文地址:https://www.cnblogs.com/trying/p/2863841.html
Copyright © 2011-2022 走看看