2015-03-23 2 views
0

получает длину общего префикса двух слов т.е., общий префикс «глобальной» и «Словарь» является «Glo» (длина 3)Как создать новую строку с префиксом 2 заданных строк?

a= input("Enter string: ") 
b= input("Enter string: ") 
count=0 
c=a.startswith(b) 
while count<=c: 
    if c: 
     count=count+1 
print(count) 

, что я не уверен в том, как получить длину от общего префикса

ответ

2

Вы можете сделать:

def pre(s1, s2): 
    if any(bool(s.strip())==False for s in (s1, s2)): 
     return 0 

    for i, (c1, c2) in enumerate(zip(s1, s2)): 
     if c1!=c2: 
      return i 

    return i+1   

Тестирование:

>>> pre("global", "glossary") 
3 
>>> pre("global", "global") 
6 
>>> pre("global", "") 
0 
+0

Вы также можете использовать 'for i, (t1, t2) in ...' и 'если t1! = t2' – Navith

0

Вы можете «обмануть» (как - это не так, как это означает быть использован, но о хорошо) и использовать os.path.commonprefix, который делает полукокс путем сравнением полукокса на все элементы, передаваемых, например:

from os.path import commonprefix 

a = 'global' 
b = 'glossary' 
length = len(commonprefix([a, b])) 
# 3 
+0

Есть в любом случае я могу избежать использования commonprefix и как в ответ выше использования Перечислять и использовать более простые методы? –

+1

@CarlyleBritto зависит от того, что вы думаете * просто * ... вы могли бы ответить одним пользователем на Pyson, но это вам ничего не принесет –

Смежные вопросы