CodeForces - 157C C. Message #include<bits/stdc++.h> #include <cstdio> #include <iostream> #include<cstring> #include<cstdio> #include<cmath> #include<algorithm> #include<string> #define ll long long using namespace std; #define speed_up ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); /* 取出一个子串,然后看最少改变几个字母能变成第二个串 取出后看第二个串经过几步能变成第一个子串 实际是字符串匹配,找出最长子串 s1 abcabc s2 bcd s1 abcabc s2 bcd s1 abcabc s2 bcd s1 abcabc s2 bcd s1 abcabc s2 bcd s1 abcabc s2 bcd s1 abcabc s2 bcd s1 abcabc s2 bcd */ int main() { string s,ss; cin>>s>>ss; int l=s.size(); int l2=ss.size(); int c=0;//最长子串 string s1=""; for(int i=1;i<l2;i++) { s1+=" "; } s=s1+s+s1;//变为" abcabc " l=l+l2+l2-2; //cout<<l<<endl; for(int i=0;i<l;i++) { int p=0; for(int j=0,k=i;j<l2&&k<l;j++,k++) { //cout<<s[k]<<" "<<ss[j]<<endl; if(s[k]==ss[j]) { //cout<<"*"<<endl; p++; } } c=max(c,p); } cout<<l2-c<<endl; }