兩個字元的包含關係

2021-09-25 13:33:21 字數 1449 閱讀 2931

字串的包含關係

牛客網:字串的包含關係

題目描述

我們定義字串包含關係:字串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...