我想看看我是否可以在一个不带重叠的字符串中找到2个连续的字母。 例如:如果字符串中有“HP”和“PH”,则答案为“是”,否则答案为“否”。
例如:
input -----> PHHP
output ----> YES
或:
input -----> HPPH
output ----> YES
和:
input -----> PHP
output ----> NO
或:
input -----> PHAP
output ----> NO
答案 0 :(得分:0)
我想这应该适用于优化的范围。
s = 'phhp'
def validate():
for i in range(len(s)):
if len(s[i:i+2]) != 2:
break
if 'ph' == s[i:i+2]:
if 'hp' in s[0:i] or 'hp' in s[i+2:i+4]:
return True
return False
print ('Found' if validate() else 'Not Found')
答案 1 :(得分:0)
尝试检查'hp'
中是否有s
,如果它是' '
,请检查'ph'
是否在s
中,如果它已返回{ {1}}:
'YES'
输出:
def func(s):
s = s.lower()
if 'hp' in s:
s = s.replace('hp',' ')
if 'ph' in s:
return 'YES'
else:
return 'NO'
else:
return 'NO'
print(func('HPHP'))
答案 2 :(得分:0)
您可以使用 re
。
<强>演示:强>
import re
def validate(string):
return 'YES' if re.search(r'(PH.*HP)|(HP.*PH)', string) else 'NO'
inputs = ['PHHP', 'HPPH', 'PHP', 'PHAP']
for inp in inputs:
print(inp, validate(inp))
<强>输出:强>
PHHP YES
HPPH YES
PHP NO
PHAP NO
答案 3 :(得分:0)
这适用于任何一对char,而不仅仅是PHHP
def validator(mystr):
for i in range(len(mystr) - 2):
Yo=''.join(reversed(mystr[i+2:i+4]))
return mystr[i:i+2] == Yo
validator ('PHHP')
#True