题意给N串字符串 然后再给你两个数字 求出 这两个数字所代表字符串得相同前缀长度。
分析 思路挺简单就是 直接暴力就行了
#include<iostream>
#include<algorithm>
#include<string>
#include<cstdio>
#include<cstring>
using namespace std;
string s[100005];
int pend(string s1,string s2){
int ans=0,len=min(s1.length(),s2.length());
for(int i=0;i<len;i++){
if(s1[i]!=s2[i]) return ans;
ans++;
}
return ans;
}
int main (void){
int N,n,m,num=1,x,y;
cin>>N;
while(N--){
cin>>n;
for(int i=1;i<=n;i++) cin>>s[i];
cin>>m;
printf("Case %d:\n",num++);
for(int i=0;i<m;i++){
cin>>x>>y;
if(x==y) printf("%d\n",s[x].length());
else printf("%d\n",pend(s[x],s[y]));
}
}
return 0;
}
总结 没错 这又是一道老师让我们练习hash的题目 我又避开了hash。 这样下去 我是不是就弄不懂hash了 2333 对了 在做题过程中 发现string 类find_first_not_of().可惜没弄懂用法。说不定能用这个解决?