zoukankan      html  css  js  c++  java
  • Work_11

    实现一个函数,可以左旋字符串中的k个字符。
    ABCD左旋一个字符得到BCDA
    ABCD左旋两个字符得到CDAB

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <stdlib.h>
    
    //字符串翻转
    void  Reverse_string(char *start, char *end){
        while (start < end){
            char temp = *start;
            *start = *end;
            *end = temp;
            start++;
            end--;
        }
    }
    
    //左旋k个字符
    void Reverse(char* arr, int size, int k){
        //左旋k次 = 左旋 (k % size) 次
        k = k % size;
    
        //法一:
        while (k > 0){
            //左旋1次
            char* cur = arr;
            char temp = *arr;
            while (*(cur + 1)){
                *cur = *(cur + 1);
                cur++;
            }
            *cur = temp;
            k--;
        }
        
        ////法二: 三次翻转法 = 左旋
        ////将前k个字符进行翻转
        //char* start = arr;
        //char* end = arr + k - 1;
        //Reverse_string(start, end);
        ////将后面的字符进行翻转
        //start = end + 1;
        //end = arr + size - 1;
        //Reverse_string(start, end);
        ////整体翻转
        //start = arr;
        //Reverse_string(start, end);
    
    
    }
    
    int main(){
        char arr[10];
        printf("请输入十个以内的字符:
    ");
        gets(arr);
        int k;
        int size = Mystring(arr);
        printf("请输入需要左旋字符的个数:");
        scanf("%d", &k);
        //左旋k个字符
        Reverse(arr, size, k);
        //输出
        printf("%s", arr);
    
        printf("
    ");
        system("pause");
        return 0;
    }

    判断一个字符串是否为另外一个字符串旋转之后的字符串。
    例如:给定s1 =AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0.

    AABCD左旋一个字符得到ABCDA
    AABCD左旋两个字符得到BCDAA

    AABCD右旋一个字符得到DAABC

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <stdlib.h>
    
    //字符串长度
    int Mystring(char* arr){
        int count = 0;
        while (*arr){
            count++;
            arr++;
        }
        return count;
    }
    
    //字符串翻转
    void  Reverse_string(char *start, char *end){
        while (start < end){
            char temp = *start;
            *start = *end;
            *end = temp;
            start++;
            end--;
        }
    }
    
    //左旋k个字符
    void Reverse(char* arr, int size, int k){
        //左旋k次 = 左旋 (k % size) 次
        k = k % size;
    
        //法一:
        while (k > 0){
            //左旋1次
            char* cur = arr;
            char temp = *arr;
            while (*(cur + 1)){
                *cur = *(cur + 1);
                cur++;
            }
            *cur = temp;
            k--;
        }
        
        ////法二: 三次翻转法 = 左旋
        ////将前k个字符进行翻转
        //char* start = arr;
        //char* end = arr + k - 1;
        //Reverse_string(start, end);
        ////将后面的字符进行翻转
        //start = end + 1;
        //end = arr + size - 1;
        //Reverse_string(start, end);
        ////整体翻转
        //start = arr;
        //Reverse_string(start, end);
    
    
    }
    
    //比较字符串是否为翻转得来的
    int Compare(char* str1, char* str2){
        int result = 0;
        int size = Mystring(str1);
        while (size){
            Reverse(str1, size, 1);
            if (strcmp(str1, str2) == 0){
                result = 1;
                break;
            }
            size--;
        }
        return result;
    }
    
    int main(){
        char str1[10], str2[10];
        printf("请输入第一个字符串:
    ");
        gets(str1);
        printf("请输入第二个字符串:
    ");
        gets(str2);
        //比较判断
        int result = Compare(str1, str2);
        if (result){
            printf("");
        }
        else {
            printf("");
        }
    
        printf("
    ");
        system("pause");
        return 0;
    }
  • 相关阅读:
    Java.io.outputstream.PrintStream:打印流
    Codeforces 732F. Tourist Reform (Tarjan缩点)
    退役了
    POJ 3281 Dining (最大流)
    Light oj 1233
    Light oj 1125
    HDU 5521 Meeting (最短路)
    Light oj 1095
    Light oj 1044
    HDU 3549 Flow Problem (dinic模版 && isap模版)
  • 原文地址:https://www.cnblogs.com/lkimprove/p/10479071.html
Copyright © 2011-2022 走看看