字串的包含關係
牛客網:字串的包含關係
題目描述
我們定義字串包含關係:字串a=abc,字串b=ab,字串c=ac,則說a包含b,a和c沒有包含關係。
輸入描述:
兩個字串,判斷這個兩個字串是否具有包含關係,測試資料有多組,請用迴圈讀入。
輸出描述:
如果包含輸出1,否則輸出0.
思路:
遍歷長的字串,當 lon
g[i]
=sho
rt[0
]long[i]=short[0]
long[i
]=sh
ort[
0]時,可以採用迴圈遍歷,依次比對long字串 i 後面的字元和 short 後面的字元。如果迴圈順利終止,必定將short完整迴圈了一次,由此可判定有包含關係。如果提前終止,說明只匹配了部分字串,那麼我們要再從long字串的 i+1 位置開始繼續遍歷比對。
這裡可以在while迴圈中加入乙個判斷語句,可以提前終止迴圈。那就是len
(sho
rt)−
j<=l
en(l
ong)
−i
len(short)-j <= len(long)-i
len(sh
ort)
−j<=l
en(l
ong)
−i這個語句的意思是:long字串自比對的首項開始到結尾字元的長度,至少要大於short整個字元的長度。
import sys
def include(str1,str2):
if len(str1)long = str2
short = str1
else:
long = str1
short = str2
i,j = 0,0
while i < len(long) and len(short)-j <= len(long)-i:
temp = i
while temp < len(long) and j < len(short) and long[temp]==short[j]:
temp += 1
j += 1
if j==len(short):
return true
else:
i += 1
j = 0
return false
for line in sys.stdin:
t = list(line.split())
if include(t[0],t[1]):
print(1)
else:
print(0)
判斷兩個字串是否為包含關係
題目描述 假設這有乙個各種字母組成的字串a,和另外乙個字串b,字串裡b的字母數相對少一些。什麼方法能最快的查出所有小字串b裡的字母在大字串a裡都有?比如,如果是下面兩個字串 string 1 abcdefghlmnopqrs string 2 dcgsrqpo 答案是true,所有在string2裡...
連線兩個字串
include include void main char lianjie char a 30 char b 30 原型 extern char strcat char dest,char src 用法 include 功能 把src所指字串新增到dest結尾處 覆蓋dest結尾處的 0 並新增 ...
交換兩個字串
交換兩個字串,原來的字串分別為 學生 和 好 字串輸出顯示為 學生好 交換後輸出顯示為 好學生 include using namespace std int main char c1 5 學生 char c2 3 好 char m,n,t m c1 n c2 cout 交換前 m n n t co...