欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

C語言怎么實現字符串的旋轉

這篇文章主要介紹“C語言怎么實現字符串的旋轉”,在日常操作中,相信很多人在C語言怎么實現字符串的旋轉問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C語言怎么實現字符串的旋轉”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

創(chuàng)新互聯(lián)專注于連云網站建設服務及定制,我們擁有豐富的企業(yè)做網站經驗。 熱誠為您提供連云營銷型網站建設,連云網站制作、連云網頁設計、連云網站官網定制、小程序開發(fā)服務,打造連云網絡公司原創(chuàng)品牌,更為您提供連云網站排名全網營銷落地服務。

這種題目有兩種思路:
1.首字符的后置以及其余元素的往前推置,循環(huán)重復此過程K次(k為左旋字符個數)。

eg:
字符串為“ABCDEF\0”,要旋轉2個字符,
首先保存首字符到一個變量,然后把其余變量全部提前一位置放,即為“BCDEF  \0”(此處注意,最后的終止符\0不要提前,留出一個空位)
再把用來保存的變量給字符串最后一個位置(除\0外),即為“BCDEFA\0”
再做一次此過程即為“CDEFGA  \0”——》“CDEFGAB\0”

源代碼:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void Exchange(char *str, int k)
{
    int i,m;
    char temp;
    char *sta;
    for (i = 0; i < k; i++)
    {
        sta = str;
        temp = *str;//保存首字符
        for (m = 0; m <= (int)strlen(str)-1; m++)//元素提前放置
        {
            *sta = *(sta + 1);
            sta++;
        }
        *(str+strlen(str)) = temp;//將首字符放置最后
    }
}

int main()
{
    int leng;
    printf("請輸入要左旋幾個字符\n");
    scanf("%d", &leng);
    char str[] = "ABCDEFG";
    Exchange(str,leng);
    printf("%s\n", str);
    system("pause");
    return 0;
}

2.三步旋轉法
這種方法是由觀察得來,旋轉后的字符串有此規(guī)律:
旋轉前“ABCDEFG”
旋轉后“CDEFGAB”
將旋轉后的字符逆置得
“CDEFGBA”
將未旋轉的字符逆置得
“GFEDCBA”
再將全部字符逆置就得到了原來的字符串“ABCDEFG”
原字符串旋轉時反向操作即可

源代碼:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void reverse(char *left, char *right)//逆置函數
{
    char temp;
    while (left < right)
    {
        temp = *left;
        *left = *right;
        *right = temp;
        left++; right--;
    }
}
void Exchange(char *str, int leng)//三步逆置
{
    reverse(str, str + leng-1);
    reverse(str + leng, str+strlen(str)-1);
    reverse(str, str + strlen(str) - 1);
}
int main()
{
    int leng;
    printf("請輸入要左旋幾個字符\n");
    scanf("%d", &leng);
    char str[] = "ABCDEFG";
    Exchange(str,leng);
    printf("%s\n", str);
    system("pause");
    return 0;
}

二.判斷一個字符串是否是由另一個字符串旋轉而來
1.第一種思路是不借助字符串庫函數,將需要判斷的字符串按照三步逆置法判斷是否和原字符串相同,但是這種方法效率較差,而且時間復雜度高。

源代碼:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void reverse(char *left,char *right)
{
    char temp;
    while (left < right)
    {
        temp = *left;
        *left = *right;
        *right = temp;
        left++; right--;
    }
}
int judgeStr(char str1[],char str2[],char str3[])
{
    int i,m=0,sum=0,s;
    char *sta ;
    char *fina ;
    int length = strlen(str1);
    for (i = 0; i <(int)strlen(str2); i++)
    {
        str3[i] = str2[i];
    }
    for (i = 0; i <= (int)strlen(str1) - 1; i++)
    {
        sta = str3;
        fina = str3 + strlen(str1) - 1;
        reverse(sta, sta + i);
        reverse(sta + i + 1, fina);
        reverse(sta, fina);
        for (; m < (int)strlen(str1); m++)
        {
            if (str1[m] != str3[m])
            {
                sum++;
                break;
            }
        }
        for (s = 0; s<(int)strlen(str2); s++)
        {
            str3[s] = str2[s];
        }
        if (sum == 4)
        {
            return 0;
        }
    }
    return 1;
}
int main(void)
{
    char str1[] = "ABCDE";
    char str2[] = "BCDEA";
    char str3[] = "BACDE";
    char stra[] = "AAAAA";
    int judge;
    judge = judgeStr(str1, str2,stra);
    if (judge == 1)
    {
        printf("str2是由str1旋轉得來的\n");
    }
    else
    {
        printf("str2不是由str1旋轉得來的\n");
    }
    judge = judgeStr(str1, str3,stra);
    if (judge == 1)
    {
        printf("str3是由str1旋轉得來的\n");
    }
    else
    {
        printf("str3不是由str1旋轉得來的\n");
    }
    system("pause");
    return 0;
}

2.使用字符串庫函數解決
使用此方法需要注意到一個規(guī)律:
一個字符串后面再接一個和自身相同的字符串后,此字符串中就出現了所有旋轉可以得到的結果。

eg:
A B C D A B C D,其中有所有的“ABCD”旋轉結果,BCDA(2~5),CDAB(3~6),DABC(4~7)。

所以做法就是利用庫函數將原字符串拼接一個自身,再在字符串中查找需要判斷的字符串即可。

源代碼:

#include<stdio.h>
#include<string.h>
int judge(char *str1, char *str2)
{
  strncat(str1, str1, strlen(str1));//原字符串拼接本身
    char *result = strstr(str3, str2);//查找目標字符串
    if (result == NULL)
    {
        return -1;
    }
    else
    {
        return 0;
    }
}
int main()
{
    char str1[] = "ABCDE";
    char str2[] = "CDEAB";
    char str3[] = "DEBAC";
    int result = judge(str1, str2);
    if (result == -1)
    {
        printf("str2不是由str1旋轉得到\n");
    }
    else
    {
        printf("str2是由str1旋轉得到\n");
    }
    result = judge(str1, str3);
    if (result == -1)
    {
        printf("str3不是由str1旋轉得到\n");
    }
    else
    {
        printf("str3是由str1旋轉得到\n");
    }
    system("pause");
    return 0;
}

到此,關于“C語言怎么實現字符串的旋轉”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯(lián)網站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

新聞名稱:C語言怎么實現字符串的旋轉
當前路徑:http://aaarwkj.com/article20/jegcco.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站改版、ChatGPT全網營銷推廣、App設計、定制開發(fā)、網站維護

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網站建設
91久久国产香蕉熟女| 91九色中文视频在线观看| 麻豆蜜桃精品视频在线观看| av剧情在线观看免费| 91精品免费播放在线观看| 国产精品亚洲在线视频| 国产老熟女高潮视频| 2022国产精品一区| 91国产精品视频在线| 亚洲成人精品一区二区| 日本高清区一区二区三区四区五区| 五月婷婷丁香综合中文字幕| 妇女自拍偷自拍亚洲精品| 九九视频在线观看免费专区 | 欧美日韩精品一区二区在线播放| 黄色国产传媒在线播放| 日本女同一区二区高清| 在线观看91高清视频| 国产在线一区二区三区不卡| 国产成人av网站在线观看| 九九热在线免费观看精品视频| 国产一级黄色片免费看| 日韩欧美国产精品自拍| 四虎最新地址在线观看| 特别黄的日本免费视频| 国内精品一区二区欧美| 天堂网一区二区三区四区| 国产一区二区成人精品| 国产一区二区三区在线看片| 夫妻性生活一级片视频| 夫妻性生活视频一级片| 97在线视频观看官网| 欧美日韩美足一区二区| 日韩欧美国产麻豆一区精品| 成人免费在线视频不卡| 中文字幕熟妇人妻av在线| 精品人妻少妇一区二区三区| 午夜视频在线观看免费高清国产| 日韩欧美麻豆不卡一区二区| 日本熟妇色在线视频不卡| 日韩av亚洲一区二区三区|