Deque应用 - Palindrome Checker

Deque这种数据结构结合了Stack和Queue的特点,元素可以从两边添加,也可以从两边移除。
依然通过List来构造该数据类型:

class Deque():

    def __init__(self):
        self.items = []

    def add_front(self, item):
        self.items.append(item)

    def remove_front(self):
        return self.items.pop()

    def add_rear(self, item):
        self.items.insert(0, item)

    def remove_rear(self):
        return self.items.pop(0)

    def is_empty(self):
        return self.items == []

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

rear可以看作是List的左边,front为List的右边。两边都能添加和删除元素。

Palindrome Checker为经典的回文问题,若字符串无论从左往右还是从右往左写,元素的顺序都一样,则为回文。如dad, eye,level等。
思路:将字符串总所有元素依次添加到Deque对象中,使用add_front或add_rear均可。然后每次检查首尾的字符是否相等(len > 2)。直至只剩下一个元素或0.

import Deque

def check_palindrome(target):
    check_deque = Deque()
    for item in target:
        check_deque.add_front(item)
    while check_deque.size() > 1:
        rear_element = check_deque.remove_rear()
        front_element = check_deque.remove_front()
        if rear_element != front_element:
            return False
    return True

print(check_palindrome('roooor'))

猜你喜欢

转载自www.cnblogs.com/jeffrey-yang/p/9824995.html