字串最大跨距

提升點:使用getchar輸入字串
解題程序:讀題(認真)-思考(設計解題模型)-編程(在計算機的角度實作自己的構想)-完善細節(參考他人的代碼,查缺補漏)
#include<iostream>
using namespace std;
char s[310],s1[12],s2[12];
int main()
{
int ls=0,l1=0,l2=0,flag=0,v1=0,v2=0;
char c;
while((c=getchar())&&c!=',') s[ls++]=c;\\輸入資料
while((c=getchar())&&c!=',') s1[l1++]=c;
while((c=getchar())&&c!=EOF) s2[l2++]=c;\\這里是c!=EOF,不能是'\n'
l2-=1;//l2會將'\n'讀入所以減一
\\因為是最大跨距,所以求第一個出現的的就行了
for(int i=0;i<ls;i++)
{
flag=0;
if(s[i]==s1[0])
for(int j=0;j<l1;j++)
{
if(s[i+j]==s1[j])
flag++;
else
break;
}
if(flag==l1)
{
v1=i;\\記錄位置
break;
}
}
\\求從后往前求第一個出現的就ok了
for(int i=ls-1;i>=0;i--)
{
flag=0;
if(s[i]==s2[l2-1])
for(int j=0;j<l2;j++)
{
if(s[i-j]==s2[l2-1-j])
flag++;
else
break;
}
if(flag==l2)
{
v2=i;\\記錄位置
break;
}
}
if(v1+l1-1<v2-l2+1&&v1!=v2)\\v1!=v2避免一方或者兩方不存在的特例
cout<<v2-l2-(v1+l1-1)<<endl;
else
cout<<-1<<endl;
return 0;\\good habit
}
看完記得自己思考一下呦,思路可以借鑒,但代碼一定要自己實作,進步,加-.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/254073.html
標籤:其他
