目录
无敌小链接
题目
Description
这个题目很简单,请你给出所有输入字符串的共同的前缀中最长的那个,如果没有,就输出 “”。
Format
Input
一行,若干个用空格隔开的长度小于 的字符串,仅包含小写字母,字符串个数不超过
。
Output
输出题目要求的结果。
Samples
输入数据 1
ab abc abcd
输出数据 1
ab
输入数据 2
ab cd ef
输出数据 2
-1
Limitation
s,
KiB for each test case.
反应
看到这题,第一眼反应是
难!非常男难!
结果看了看其他题目,要做对必须得要AK IOI用各种奇葩的算法,不得已,硬着头皮上去了
然而
经过冥思苦想之后,我终于有了想法
龟哥(扔袜子):废话少说!
好啦好啦
龟哥你让开些
解法来咯
解法
还是来张代码图
代码
#include<bits/stdc++.h>
using namespace std;
string l;
string ll;
string ss;
int c;
int main(){
cin>>l;
while(cin>>ss){
c=0;
ll=l;
l="";
while(ll[c]==ss[c]){
l+=ss[c];
c++;
}
}
if(l!="") cout<<l;
else cout<<"-1";
return 0;
}
看出来了莫有?
好吧,就知道你不会,来一一分解
分解
字符串
字符串是答案
字符串是当前输入
至于字符串……是当前的
(到时候会有讲的)
循环
第一个循环很简单
第二个也不难
其实就是找出他们的最长前缀
不过是另一个参数
而它又要变为空
那么就登场啦
总结
此题吓唬人,只需找前缀