Как определить, содержит ли строка заданную подстроку (есть пробел) - PullRequest
0 голосов
/ 05 августа 2020

например,

a = 'abc123def'
b = 'abcdef'

Мне нужна функция, которая может определять, есть ли b в a.

contains(a,b)=True

Разрыв ps также разрешен в представлении b, например

b='abc_def'

, но регулярные выражения не разрешены.

Ответы [ 3 ]

2 голосов
/ 05 августа 2020

Если вы хотите проверить, является ли b подпоследовательностью из a, вы можете написать:

def contains(a, b):
    n, m = len(a), len(b)
    j = 0
    for i in range(n):
        if j < m and a[i] == b[j]:
            j += 1
    return j == m
0 голосов
/ 05 августа 2020
def new_contained(a,b):
   boo = False
   c = [c for c in a]
   d =  [i for i in b]
   if len(c)<=len(d):
     for i in c:
        if i in d:
          boo = True
   return boo  
0 голосов
/ 05 августа 2020

Попробуйте использовать понимание списка:

def contains(main_string, sub_string):
    return all([i in main_string for i in sub_string])

ПРИМЕЧАНИЕ: 'all' - это встроенная функция, которая принимает итерацию логических значений и возвращает try, если все они истинны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...