선형덱을 이용한 회문구조 판별함수

박진은·2022년 5월 5일
0

자료구조

목록 보기
13/37
class linearDec:
    def __init__(self):
        self.list = []
        self.front = 0
        self.rear = 0

    def isEmpty(self):
        return len(self.list) == 0

    def addFront(self, item):
        self.list.insert(0, item)

    def deleteFront(self):
        return self.list.pop(0)

    def deleteFront(self):
        self.list.pop(-1)

    def addRear(self, item):
        self.list.append(item)

    def deleteRear(self):
        return self.list.pop(-1)

    def clear(self):
        self.list = []

    def size(self):
        return len(self.list)

def define_palindrome(string):
    dec = linearDec()
    dec2 = linearDec()
    for i in string:
        dec.addRear(i)  # 문자하나하나 삽입한다.

    for e in range(len(string)//2):
        dec2.addFront(dec.deleteFront())

    for j in range(len(dec2.list)):
        if dec.deleteRear() == dec2.deleteRear():
            continue
        else:
            return False
    return True

print(define_palindrome("qkrwlsdms"))
def define_palindrome(string):
    dec = linearDec()
    dec2 = linearDec()
    for i in string:
        dec.addRear(i)  # 문자하나하나 삽입한다.

    for e in range(len(string)//2):
        dec2.addFront(dec.deleteFront())

    for j in range(len(dec2.list)):
        if dec.deleteRear() == dec2.deleteRear():
            continue
        else:
            return False
    return True

print(define_palindrome("qkrwlsdms")

문자열을 받아서 하나하나 덱에 순서대로 넣어준다 (덱 1에)

그 다음에 deleteFront 를 실시해서 문자열 뒤에서 부터 꺼내서 다른덱에 넣어주고

그 다음에 다른덱에서 deleteRear 을 실시해서 원래 문자열을 처음 넣어주었던 덱의 deleteRear한 문자열과 비교한다면 충분히 가능하다.

profile
코딩

0개의 댓글