//string find函数使用方法一般配合substr(i,j)使用
//如果找到这个子串的话但会 就会返回他的首歌字母出现的位置
//没找到这个子串就会返回-1
//思路就是暴力枚举每种情况 看看是否在另一个字符中出现过
#include <bits/stdc++.h>
using namespace std;
#define xiao chu \
ios::sync_with_stdio(false) \
cin.tie(0), \
cout.tie(0);
typedef long long LL;
typedef pair<int, int> PII;
const int N = 1e5 + 10;
int n, m, a[N];
int pd(string s, string t)
{
int res = 0;
for (int j = 0; j < s.size(); j++)//区间开始的长度
{
for (int i = 1; i < s.size() - j+1; i++)//长度
{
int x = 0;
if (t.find(s.substr(j, i)) != -1)//寻找看是否出现过
{
x = i;
}
res = max(res, x);
}
}
return res;
}
signed main()
{
int T;
cin >> T;
while (T--)
{
int res = 0;
string s[100];
cin >> n;
for (int i = 0; i < n; i++) cin >> s[i];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
int x = 0;
if (i != j)
{
x = pd(s[i], s[j]);
}
res = max(res, x);
}
}
cout << res << endl;
}
}
字符串的简单处理
#include<bits/stdc++.h>
using namespace std;
#define xiao chu \
ios::sync_with_stdio(false) \
cin.tie(0),cout.tie(0);
typedef long long LL;
typedef pair<int,int>PII;
const int N=1e5+10;
int n,m,a[N];
signed main()
{
string s,t;
cin>>n;
cin>>s>>t;
int k=0;
int ans=0;
for( int i=0;i<n;i++)
{
if((s[i]+k-'a')%26!=(t[i]-'a')%26)//判断是否相等
{
ans++;
k+=(t[i]-'a')-((s[i]+k-'a')%26);//找到他们相差的之后加上 其实-7和+19的在%26效果是一样的
k=(k+26)%26;//加上26的原因就是因为 他有可能是负的 加上二十六利于做
}
}
cout<<ans<<endl;
}