亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

c語言輸出字符串中最大對稱子串長度的3種解決方案

2020-01-26 15:34:03
字體:
來源:轉載
供稿:網友

問題描述:

輸入一個字符串,輸出該字符串中最大對稱子串的長度。例如輸入字符串:“avvbeeb”,該字符串中最長的子字符串是“beeb”,長度為4,因而輸出為4。

解決方法:中序遍歷

一,全遍歷的方法:

1.全遍歷的方法,復雜度O(n3);

2.遍歷原字符串的所有子串,然后判斷每個子串是否對稱;

實現方法是:我們讓一個指針i從頭至尾遍歷,我們用另一個指針j從j=i+1逐一指向i后面的所有字符。就實現了原串的所有子串的遍歷(子串為指針i到j中間的部分);
最后判斷得到的子串是否對稱即可;

二,此外還有個巧妙的方法,值得和大家分享一下(這是自己想的哦,轉載請注明出處):

原串是str1=“avvbeeb”,將其翻轉得到str2=“beebvva”,然后錯位比較:

1:               avvbeeb

str2:beebvva             (上下對齊的元素是a;a比較)

 

2:              avvbeeb

str2:beebvva           (上下對齊的量元素av;va比較,不對稱)

…………

11:              avvbeeb

str2:                  beebvva           (上下對齊的量元素beeb;beeb比較,得到最長對稱子串)

…………

該方法要移動m+n次,每次元素比較個數從1到m不等,復雜度O(n2);

 

三,最值得推薦的還是下面的方法,復雜度O(n):

(以下都是自己想的自己寫的,碼字實在辛苦,轉載請注明出處)

1.起始這道題分析起來非常扯淡,花了我兩天的空閑時間才搞定!

2.分析過程如下:

3. 1-k位的元素中,其中最長對稱子串(包含第k位元素)長度為f(n),我們討論f(n+1)與f(n)的關系;

4.比如 b xxx a其中xxx代表對稱子串,a為第n+1位元素,我們現在求f(n+1);

5.我們分析所有情況:(我們用xxx代表n位對稱子串)

          數組A存放字符數組;

          f(n)表示f(n)位元素對應子串長度;

   分析如下A[n+1]=a的子串長度值f(n+1)值是多少:

   1:bxxxa  :A[n+1]位元素a與對稱子xxx串前的一位元素b不同時;

     1.1: a與左相鄰元素不同,即xxx=bxb時,bbxba不是對稱子串,f(n+1)=1;

     1.2: a與左相鄰元素相同,即xxx=axa時,baxaa,如果是對稱子串,則x這個未知部分必須全部是a,即

            baaaa,f(n+1)=f(n)+1,否則不是對稱子串f(n+1)=1;

   axxxa  :A[n+1]位元素a與對稱子串前一位元素相同;

     2.這種情況f(n+1)位元素a與其左相鄰元素是否相同都不影響f(n+1)的結果,

        比如:a bacab a        a aaaaa a

        串長:1 13135 7        1 23456 7        也就是xxx不論是何種情況的對稱串,f(n+1)=f(n)+2;

 6.綜上分析,串A[n+1]位的值f(n+1)只和串中第A[n]位字符以及第A[n-f(n)-1]有關;

    (5中分析的f(n+1)=1的情況可以忽略不考慮,因為最小對稱子串值>=1)

    1: A[n+1]和A[n-f(n)-1]相同;

               a                           xxx             x              a           :acca       aaaa      acdca

     A[n-f(n)-1]                                   A[n]      A[n+1]    

                                                          f(n)     f(n+1)    :1124       1234      11134

      此時f(n+1)=f(n)+2;

     2: A[n+1]和A[n-f(n)-1]不同;A[n+1]和A[n]相同;

        如:  b                    xxx             a             a           :bcacaa       baaaaa    

        A[n-f(n)-1]                          A[n]      A[n+1]        :111332       112345

      此時f(n+1)與它前面有幾個a有關;

綜上分析代碼如下:

復制代碼 代碼如下:

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

int FUN(char *inp){//求最大對稱子串長度
        int maxlen = 1;//最大長度
        int len=strlen(inp);
        int record[len];//存包含該位及前個元素最長對稱子串
        record[0]=1;
        int i=1;
        for(;i<len;i++){
                int max =1;
                if((i-record[i-1]-1)>=0 && inp[i] == inp[i-record[i-1]-1]){
                        max = max>(record[i-1] + 2)? max:(record[i-1] +2);
                }
                int k = 1;
                while(inp[i] == inp[i-k]){
                        k++;
                }
                max = max>k? max:k;
                record[i] = max;
                printf("----- is:%d/n",record[i]);
                if(record[i]>maxlen) maxlen=record[i];
        }
        return maxlen;
}

int main(){
        char *input="abadddkeipdldlfk";
        int retlen = FUN(input);//從前向后遞歸
        printf("max length is:%d/n",retlen);
        return 0;
}

輸出結果:

復制代碼 代碼如下:

xu@xu-ThinkPad-X61:~/algorithm$ gcc LongSunmetricSub.c
xu@xu-ThinkPad-X61:~/algorithm$ ./a.out
----- is:1
----- is:3
----- is:1
----- is:2
----- is:3
----- is:1
----- is:1
----- is:1
----- is:1
----- is:1
----- is:1
----- is:3
----- is:1
----- is:1
----- is:1
max length is:3

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲网站视频福利| 国产精品高清免费在线观看| 北条麻妃在线一区二区| 国产精品日韩欧美大师| 久久久人成影片一区二区三区观看| 日本久久精品视频| 国产一区二区三区在线免费观看| 欧美亚洲一级片| 国产亚洲精品美女| 欧美伦理91i| 欧美一区二区三区四区在线| 欧美黑人巨大xxx极品| 久久天天躁狠狠躁夜夜爽蜜月| 欧美电影免费观看网站| 国内精品久久久久久久久| 成人精品在线观看| 国产精品美女久久久久av超清| 日韩精品久久久久久久玫瑰园| 亚洲欧美日韩网| 亚洲理论电影网| 精品自拍视频在线观看| 欧美最猛黑人xxxx黑人猛叫黄| 久久福利视频网| 欧美激情影音先锋| 九九精品在线播放| 欧洲亚洲妇女av| 国产91亚洲精品| 欧洲永久精品大片ww免费漫画| 国产一区红桃视频| 欧美日韩性视频在线| 中文日韩电影网站| 国产精品免费福利| 成人免费黄色网| 伊人男人综合视频网| 欧美日韩亚洲视频| 欧美裸体xxxxx| 亚洲欧美综合v| 欧美老少做受xxxx高潮| 中文字幕精品一区久久久久| 亚洲国产精品久久久久久| 日韩欧美一区二区三区久久| 欧美激情2020午夜免费观看| 国产美女久久久| 欧美美最猛性xxxxxx| 国产精品色午夜在线观看| 久久理论片午夜琪琪电影网| 一区二区成人精品| 久久激情视频久久| 亚洲欧美国产精品| 91地址最新发布| 91在线精品播放| 久久人人97超碰精品888| 欧美一级片一区| 亚洲成人动漫在线播放| 国产精品白丝jk喷水视频一区| 91精品国产乱码久久久久久久久| 精品香蕉在线观看视频一| 亚洲精品久久久一区二区三区| 热久久免费国产视频| 欧美性猛交xxxx免费看| 日韩欧美a级成人黄色| 久热精品视频在线观看一区| 欧美人交a欧美精品| 成人福利视频在线观看| 欧美激情在线观看| 亚洲成人免费网站| 国产精品麻豆va在线播放| 色综合男人天堂| 日韩精品视频中文在线观看| 亚洲精品99久久久久| 亚洲激情免费观看| 欧美日韩在线免费| 国产精品专区第二| 日本精品在线视频| 国产精品久久久久久久久久尿| 国产成人精品一区二区在线| 国产精品第一视频| 国产福利视频一区| 亚洲网在线观看| 亚洲国产毛片完整版| 色综合色综合网色综合| 91av视频在线免费观看| 欧美中在线观看| 国产精品久久久亚洲| 国产精品麻豆va在线播放| 欧美日韩另类字幕中文| 91精品国产乱码久久久久久蜜臀| 欧美在线一级视频| 国产99久久精品一区二区 夜夜躁日日躁| 韩剧1988免费观看全集| 久久理论片午夜琪琪电影网| 久久中国妇女中文字幕| 成人深夜直播免费观看| 亚洲第一精品电影| 日韩在线免费视频| 亚洲国产精品久久久久久| 亚洲色图13p| 91青草视频久久| 国产日韩欧美日韩| 久久免费国产精品1| 国产精品伦子伦免费视频| 亚洲第一免费播放区| 欧洲日韩成人av| 国产欧美日韩最新| 欧洲中文字幕国产精品| 精品视频www| 国产精品女主播| 色综合视频网站| 国产日韩综合一区二区性色av| 亚洲天堂免费在线| 欧美极度另类性三渗透| 91精品国产综合久久男男| 日韩精品在线看| 青草青草久热精品视频在线网站| 亚洲欧洲国产精品| 国产亚洲精品久久| 日韩免费在线免费观看| 97超碰国产精品女人人人爽| 91久热免费在线视频| 国产成人精品一区| 中文字幕日韩欧美精品在线观看| 亚洲人成在线观| 日韩av免费网站| 九九热视频这里只有精品| 亲爱的老师9免费观看全集电视剧| 国产日韩欧美日韩大片| 91中文字幕一区| 久久精品人人做人人爽| 色婷婷av一区二区三区在线观看| 国产精品揄拍500视频| 日本免费一区二区三区视频观看| 成人欧美一区二区三区在线湿哒哒| 国产精品久久激情| 精品欧美国产一区二区三区| 久久久久女教师免费一区| 亚洲人成电影在线| 富二代精品短视频| 色爱av美腿丝袜综合粉嫩av| 亚洲乱码一区av黑人高潮| 亚洲天堂成人在线视频| 国产精品v片在线观看不卡| 久久久国产精品亚洲一区| 欧美成人免费在线视频| 97超级碰碰碰久久久| 精品毛片网大全| 日韩中文字幕视频在线| 日韩欧美精品免费在线| 午夜精品在线观看| 日韩成人在线视频| 亚洲free嫩bbb| 亚洲综合在线小说| 国产精品免费网站| 伊人久久五月天| 中国日韩欧美久久久久久久久| 久久91亚洲精品中文字幕| 久久视频这里只有精品| 亚洲石原莉奈一区二区在线观看| 91高清视频免费| 亚洲另类激情图| 欧美在线视频一区二区| 黄色一区二区三区| 91精品国产91久久久久久最新| 欧美日韩成人精品| 欧美黑人性视频|