문자열에 특정 하위 문자열이 연속적으로 나타나는지 확인하는 가장 좋은 방법을 찾으려고합니다. 부울 값을 반환합니다. 예를 들어 전체 문자열이 문자열 내부에있는 경우에만 True를 반환합니다. 몇 가지 예제 테스트 사례 :
consecutive_checker(string='blaablaa', substring = 'a')
>>> True
consecutive_checker(string='blaablaa', substring = 'aa')
>>> False
consecutive_checker(string='blaablaa', substring = 'blaa')
>>> True
consecutive_checker(string='blaablaa', substring = 'baa')
>>> False
def consecutive_checker(string='blaablaa', substr = 'blaa'):
count = string.count(substr)
if count > 1:
for sidx in range(len(string) - len(substr)+1):
for ssidx in range(len(substr)+1):
if string[sidx:sidx+ssidx] == string[sidx+ssidx:sidx+ssidx*2] == substr:
return True
return False
효율성을 위해 다음과 같이 설명합니다.
그래서 어떻게하면 더 개선 할 수 있을지 생각하고있었습니다. count()
전체 문자열을 반복하는 것이 매우 효율적이지만 내장 함수 처럼 보입니다 . 개선의 포인트가 될 수 있지만 필요할 때만 반복하는 안전망으로 사용했기 때문에 이것을 완전히 피할 수는 없습니다. 마찬가지로 세 가지 추악한 검사와 이중 for 루프는 효율성을 제공하지 않습니다. 그렇다면 어떻게 더 개선 할 수 있습니까? 어떤 제안이라도 환영합니다!
당신은 이것을 정말로 지나치게 복잡하게 만들고 있습니다. 하위 문자열을 두 배로 늘리고 문자열에 나타나는지 확인하십시오.
def consecutive_checker(string, substr):
return substr*2 in string
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다