Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 회문:숫자를 확인하는 방법이 회문입니까?

<시간/>

회문이란 무엇입니까?

회문은 왼쪽에서 오른쪽으로 또는 오른쪽에서 왼쪽으로 읽을 때 동일한 문자열입니다. 즉, 회문 문자열은 원래 문자열과 반대 방향이 같은 문자열입니다.

예를 들어 시민, 부인은 회문입니다.

고양이는 회문이 아닙니다. 그 반대는 원래 문자열(cat)과 같지 않은 tac이기 때문입니다.

입력 문자열이 회문인지 여부를 찾는 프로그램을 작성하십시오.

방법 1 - 문자열의 역방향 찾기

  • 프로그램에서 가장 필요한 것은 문자열의 역순을 찾는 것입니다.

  • 문자열을 뒤집는 방법 중 하나를 사용하여 역순을 찾을 수 있습니다. 우리는 문자열을 뒤집기 위해 간단한 슬라이싱 방법을 사용할 것입니다. 내장된 ''.join(reversed())도 사용할 수 있습니다. 문자열을 뒤집는 다른 방법이 있지만 간단한 방법을 사용하겠습니다.

  • 반전된 문자열을 원래 문자열과 비교합니다.

  • 두 문자열이 같으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

예시

def isPalindrome(s):rev=s[::-1] if(rev==s):return True return Falseprint("문자열을 입력하세요")st=input()print(isPalindrome(st)) 

출력

문자열madamTrue를 입력하세요

방법 2 - 문자열의 역순을 찾지 않고

아이디어는 같지 않을 때까지 문자열의 처음 인덱스와 마지막 인덱스의 문자를 지속적으로 비교하는 것입니다.

우리는 문자열의 역을 찾지 않고 두 가지 예를 보게 될 것입니다 -

문자열 값 "부인":

  • 우리는 동일한 첫 번째 문자와 마지막 문자를 비교하고 다시 동일한 두 번째 및 두 번째 마지막 문자를 비교합니다. 마지막으로 한 캐릭터만 남았습니다. 따라서 문자열은 회문입니다.

문자열 값 "판독기":

  • 두 번째와 두 번째 마지막 요소를 비교할 때까지 문자는 동일합니다.

    마지막 세 번째와 세 번째 마지막 문자를 비교할 때 동일하지 않으므로 회문이 아닙니다.

  • 재귀 또는 두 개의 포인터를 사용하여 이 아이디어를 구현할 수 있습니다. 두 개의 포인터를 사용하여 구현합니다. 0에서 시작 포인터로 시작하고 마지막 인덱스에서 끝 포인터로 시작합니다. 비교를 시작하고 문자가 같으면 시작 포인터를 증가시키고 끝 포인터를 감소시킵니다(따라서 두 번째 및 두 번째 마지막 문자로 가져오는 식입니다).

  • 언제 false를 반환합니까? 포인터 집합의 문자가 같지 않으면 추가 인덱스를 찾을 필요가 없으며 False를 반환할 수 있습니다.

  • 언제 True를 반환합니까? 다른 경우에, string이 회문이면 두 포인터가 같아지거나(확인할 문자가 1개만 남음) 시작 포인터가 끝 포인터를 초과하면(모든 문자가 확인됨) True를 반환합니다.

예시

def isPalindrome(s):rev=s[::-1] if(rev==s):return True return Falseprint("문자열을 입력하세요")st=input()print(isPalindrome(st)) 

출력

문자열 판독기False를 입력하세요>>>문자열madamTrue를 입력하세요