日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

最大公共字符串输出

發(fā)布時(shí)間:2025/5/22 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 最大公共字符串输出 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一.華為OJ題目:

查找兩個(gè)字符串a(chǎn),b中的最長(zhǎng)公共子串。

詳細(xì)描述:

查找兩個(gè)字符串a(chǎn),b中的最長(zhǎng)公共子串。

接口設(shè)計(jì)及說明:

?

?/*****************************************************************************

?Description??: 查找兩個(gè)字符串a(chǎn),b中的最長(zhǎng)公共子串

?Input Param??: String stringA, 輸入字符串A

????String stringB, 輸入字符串B??????????????

?Output Param?:

?Return Value?: 成功返回最大公共子串,失敗返回null(如:數(shù)據(jù)錯(cuò)誤)

?*****************************************************************************/

?public static StringiQueryMaxCommString(String stringA, String stringB)

?{

????/* 在這里實(shí)現(xiàn)功能,將結(jié)果填入輸入數(shù)組中*/

????return null;

?}

?

二.詳細(xì)解答過程:

?

1.首先,計(jì)算2個(gè)字符串的長(zhǎng)度。定義整形變量 counts,pos_end;lengthA=strA.length()

2.然后,進(jìn)入兩層循環(huán):

(1)第一層循環(huán),用i作遞增變量(0~lengthA),初始化posA,countsA;

(2)第二層循環(huán),用j作遞增變量(0~lengthB)

進(jìn)入第二層循環(huán),尋找B字符串中與str[posA]相等的字符,如果找到,那么posA++,countsA++,

接著在第二層循環(huán)內(nèi)繼續(xù)尋找查看字符串B中是否下一個(gè)字符仍然與A字符串中的對(duì)應(yīng)字符相同,

如果又找到,那么繼續(xù)讓posA++,countsA++,如果中間突然出現(xiàn)一個(gè)不相等然后后面一個(gè)又相等了怎么辦?會(huì)不會(huì)出現(xiàn)誤差?

?

事實(shí)證明不會(huì)出現(xiàn)這種情況,原因是posA++的同時(shí)j也在遞增,所以他們是對(duì)應(yīng)相等的時(shí)候,才會(huì)進(jìn)入相應(yīng)的條件語句

并且posA++,countsA++

(3)第二層循環(huán)結(jié)束之后,i++,那么再重新尋找公共字符串,如果找到更大的字符串,那么countsA>counts條件語句將成立

于是進(jìn)入條件語句,counts更新,posA的位置也更新。(因?yàn)閜osA位置遞增了,所以處理之后要-1)

?

3.該步驟將最大公共字符子串從末尾添加進(jìn)string類str內(nèi);

?

4.函數(shù)返回str;

?

代碼:

//求最大公共字符串并輸出

?

#include <iostream> #include <string> using namespace std; static string iQueryMaxCommString(string&stringA, string stringB){int cnts=0,pos_end,lenA,lenB;lenA=stringA.size();lenB=stringB.size();for(int i=0;i<lenA;i++){int posA=i;int countA=0;for(int j=0;j<lenB;j++){if(stringA[posA]==stringB[j]){countA++;++posA;if(cnts<countA){cnts=countA;pos_end=posA-1;}}}}string str;int begin=pos_end-cnts+1;for(int j=begin;j<=pos_end;j++){str.push_back(stringA[j]);}return str;}intmain(){string str1,str2;getline(cin,str1);getline(cin,str2);cout<<iQueryMaxCommString(str1,str2)<<endl;return 0;}

總結(jié)

以上是生活随笔為你收集整理的最大公共字符串输出的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。