程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> c語言-C語言經典例題:求最大公共字符串

c語言-C語言經典例題:求最大公共字符串

編輯:編程解疑
C語言經典例題:求最大公共字符串

自己編寫了很久都沒寫出來,求大神共享一下代碼,就是給定兩個字符串,求最大的公共子串,新手

最佳回答:


剛才那個有點錯漏

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

void getMaxCommonSubstring(char*,char*);

int main(){
    char str1[1000],str2[1000];
    scanf("%s",str1);
    scanf("%s",str2);
    getMaxCommonSubstring(str1,str2);
    return 0;
}

//得到兩個字符串的最大公共子串並輸出 
//如果有多個最大子串只輸出第一個 
void getMaxCommonSubstring(char* str1,char* str2){ 
    int len1 = strlen(str1);
    int len2 = strlen(str2);
    //保存最大字符串及其長度 
    int maxLen = 0;
    char maxStr[1000]={0};
    //對str1和str2進行遍歷 
    int i,j,k;
    for(i=0;i<len1;i++){
        for(j=0;j<len2;j++){
            //如果某個字符相同,則繼續看後面最多有幾個相同 
            if(str1[i]==str2[j]){
                //保存已匹配的字符串及其長度 
                int len = 1;
                char buff[1000]={0};
                buff[0]=str2[j];
                //對後面的字符遍歷 
                for(k=1;i+k<len1&&j+k<len2;k++){
                    //字符不相同則跳出 
                    if(str1[i+k]!=str2[j+k])break;
                    buff[len++]=str2[j+k];
                }
                //如果匹配的字符串比原來的最大字符串更大,則拷貝到最大字符串 
                if(len>maxLen){
                    maxLen=len;
                    strcpy(maxStr,buff);
                }
            }
        }
    }
    printf("MaxCommonSubstring:\n%s\nlength:%d\n",maxStr,maxLen);
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved