在python中如何在没有ovelap的情况下找到字符串中的连续字母?

2024-09-30 10:40:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我想看看我能不能在一个字符串中找到两个连续的字母而不重叠。 例如:如果字符串中有“HP”和“PH”,则回答“是”,否则回答“否”。你知道吗

例如:

input -----> PHHP
output ----> YES

或:

input -----> HPPH
output ----> YES

以及:

input -----> PHP
output ----> NO

或:

input -----> PHAP
output ----> NO

Tags: no字符串inputoutput字母phyeshp
3条回答

您可以使用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

我想这应该仍然适用于优化的范围。你知道吗

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')

尝试检查'hp'是否在s中,如果是,则用' '替换它。现在检查'ph'是否在s中,如果是返回'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'))

输出:

NO

相关问题 更多 >

    热门问题