【例題4】字串環
阿新 • • 發佈:2021-07-15
【例題4】字串環
題面
題目描述
有兩個由字元構成的環。
請寫一個程式,計算這兩個字元環上最長連續公共字串的長度。
例如,字串 ABCEFAGADEGKABUVKLM
的首尾連在一起,構成一個環;字串 MADJKLUVKL
的首尾連在一起,構成另一個環;UVKLMA
是這兩個環的一個連續公共字串。
輸入格式
一行,包含兩個字串,分別對應一個字元環。這兩個字串之間用單個空格分開。字串長度不超過 \(255\),且不包含空格等空白符。
輸出格式
輸出一個整數,表示這兩個字元環上最長公共字串的長度。
樣例
樣例輸入
ABCEFAGADEGKABUVKLM MADJKLUVKL
樣例輸出
6
分析
-
注意到字串長度不超過255,故考慮暴力列舉
-
(find()函式的解釋請見移位包含的分析)
字串的 erase() 函式,形如 s.erase(pos, len)
刪除字串 s 中從 pos 開始的長度為 len 的字元
Code
#include <bits/stdc++.h> using namespace std; string s1, s2; int ans; int main(void) { cin >> s1 >> s2; s1 += s1; s2 += s2; while (s2.size()) { for (int i = 1; i < s2.size(); ++i) { if (s1.find(s2.substr(0, i)) != s1.npos) { ans = max(ans, i); } } s2.erase(0, 1); } cout << ans; return 0; }
部落格園:https://www.cnblogs.com/Juro/
Copyright ©2021 Juro
【轉載文章務必保留出處和署名,謝謝!】