스택 자료구조를 이용하여 문자열이 회문인지 확인이 필요한 경우 스택 클래스를 생성하고 스택에 값을 추가 및 삭제하기 위해 push, pop 메소드를 정의한다. 다른 방법은 스택이 비어 있는지 여부를 확인합니다.
아래는 동일한 데모입니다 -
예시
class Stack_structure: def __init__(self): self.items = [] def check_empty(self): return self.items == [] def push_val(self, data): self.items.append(data) def pop_val(self): return self.items.pop() my_instance = Stack_structure() text_input = input('Enter the string... ') for character in text_input: my_instance.push_val(character) reversed_text = '' while not my_instance.check_empty(): reversed_text = reversed_text + my_instance.pop_val() if text_input == reversed_text: print("The string is a palindrome") else: print("The string isn't a palindrome")
출력
Enter the string... MalayalaM The string is a palindrome
설명
-
'Stack_structure'라는 클래스는 'init' 메소드로 정의됩니다.
-
이 메소드는 빈 목록을 초기화합니다.
-
스택이 비어 있는지 여부를 확인하는 'check_empty'라는 또 다른 메서드가 정의되어 있습니다.
-
스택에 요소를 추가하는 'push_val'이라는 또 다른 메서드가 정의되어 있습니다.
-
스택에서 요소를 삭제하는 'pop_val'이라는 또 다른 메서드가 정의되어 있습니다.
-
이 'Stack_structure'의 인스턴스가 정의됩니다.
-
문자열은 사용자로부터 가져옵니다.
-
반복되고 'check_empty' 메서드가 호출됩니다.
-
다른 빈 문자열이 정의되고 문자열이 반전됩니다.
-
이 반전된 문자열은 빈 문자열에 저장됩니다.
-
이 반전된 문자열과 사용자의 문자열을 비교합니다.
-
동일하면 회문임을 의미합니다.
-
그렇지 않으면 회문이 아닙니다.
-
관련 출력이 콘솔에 표시됩니다.