比赛描述
妹子:说你爱我!
贲神:不说!
妹子:快说你爱我!
贲神:不说!
…………
妹子:你快说嘛!
贲神:好吧好吧。watashilostvectoryou
贲神真的说了呦,不过妹子觉得很不爽,所以她想把句子里面包含“love”的最短的字符串找出来(如果有多个的话找出最左边的),你能帮帮她么?
输入
第一行为一个正整数T表示有T组数据
每组数据有一行,为一个小写字母组成的字符串,长度不超过10000
输出
若可以找到“love”,则输出l最早出现的位置(默认第一个字符的位置为1),若找不到,则输出-1.
样例输入
1
watashilostvectoryou
样例输出
8
提示
题目来源
张飞
#include<stdio.h> int main(){ int i,j,T,state,len,minLen,lPos; char *p,c[10001]; scanf("%d",&T); while(T--){ scanf("%s",c); minLen = 10001; lPos = -1; for(i=0;c[i];i++){ if('l'==c[i]){ state = 0; for(j=i+1;c[j];j++){ if('l'==c[j] && 0==state){ //这是一个很好的剪枝 i = j; } if('o'==c[j] && 0==state){ state = 1; } if('v'==c[j] && 1==state){ state = 2; } if('e'==c[j] && 2==state){ len = j-i+1; if(minLen>len){ minLen = len; lPos = i; } break; } } } } if(lPos!=-1){ printf("%d\n",lPos+1); }else{ printf("-1\n"); } } }