字串最大跨距

2021-10-01 10:26:41 字數 969 閱讀 4591

描述

有三個字串s,s1,s2,其中,s長度不超過300,s1和s2的長度不超過10。想檢測s1和s2是否同時在s**現,且s1位於s2的左邊,並在s中互不交叉(即,s1的右邊界點在s2的左邊界點的左側)。計算滿足上述條件的最大跨距(即,最大間隔距離:最右邊的s2的起始點與最左邊的s1的終止點之間的字元數目)。如果沒有滿足條件的s1,s2存在,則輸出-1。

例如,s = 「abcd123ab888efghij45ef67kl」, s1=「ab」, s2=「ef」,其中,s1在s**現了2次,s2也在s**現了2次,最大跨距為:18。

輸入三個串:s1, s2, s3,其間以逗號間隔(注意,s1, s2, s3中均不含逗號和空格);

輸出s1和s2在s最大跨距;若在s中沒有滿足條件的s1和s2,則輸出-1。

樣例輸入

abcd123ab888efghij45ef67kl,ab,ef

樣例輸出

181、這道題正常地用迴圈就可以解決了,

2、比較麻煩的是,s的輸入,可以用迴圈解決

3、第三個字串的輸入時判斷條件一開始我僅用了『\n』,但是是不行,在網上看到用eof但也不行,一直是runtime error,後來把兩個合起來才過,猜想是有檔案的輸入所以後面要用eof

#include

char a[

400]

,b[20

],c[20]

;int

main()

} i=k++;if

(p)break;}

p=0;for

(i=lll-

1;i>=

0;i--)}

i=k++;if

(p)break;}

if(p&&m-n-

1>=0)

else

printf

("-1");

}

noi(oj)程式設計基礎篇目錄

26 字串最大跨距

總時間限制 1000ms 記憶體限制 65536kb 描述有三個字串s,s1,s2,其中,s長度不超過300,s1和s2的長度不超過10。想檢測s1和s2是否同時在s 現,且s1位於s2的左邊,並在s中互不交叉 即,s1的右邊界點在s2的左邊界點的左側 計算滿足上述條件的最大跨距 即,最大間隔距離 ...

NOI0107字串最大跨距

這裡是乙個究極瓜皮,十個小時才做出來 這裡是題幹 一道很明顯的模擬題,一般都只要按照題幹的流程就ac了 include using namespace std intmain if flag 1 if flag 2 else if strstr a,b null strstr a,c null z ...

PTA7 7 h0093 字串最大跨距

一 題目描述 二 解題思路 首先利用string把整個字串讀入 然後用逗號進行分隔成三個字串,然後用find和rfind函式解決即可。三 實現 1 include bits stdc h 2 using namespace std 3int main 417 if vis1 vis2 18 s u ...