2017網易內推編程題(判斷單詞):解答代碼

小易喜歡的單詞具備如下特性:
1.單詞每一個字母都是大寫字母
2.單詞沒有連續相等的字母
3.單詞沒有形如「xyxy」(這裏的x,y指的都是字母,而且能夠相同)這樣的子序列,子序列可能不連續。
例如:
小易不喜歡」ABBA」,由於這裏有兩個連續的’B’
小易不喜歡」THETXH」,由於這裏包含子序列」THTH」
小易不喜歡」ABACADA」,由於這裏包含子序列」AAAA」
小易喜歡」A」,」ABA」和」ABCBA」這些單詞 給你一個單詞,你要回答小易是否會喜歡這個單詞。python

輸入描述:app

輸入爲一個字符串,都由大寫字母組成,長度小於100code

輸出描述:utf-8

若是小易喜歡輸出」Likes」,不喜歡輸出」Dislikes」字符串

輸入例子:input

AAAit

輸出例子:io

Dislikesclass

解答代碼:import

# -*- coding:utf-8 -*- 
# 2016/8/19
# mail:ybs.kakashi@gmail.com
from collections import defaultdict


input_words = raw_input("please input your words:\n")
checkers = list()


def check_1(words):
    if words.islower() is True:
        return False
    if words.upper() == words:
        return True
    return False


def check_2(words):
    index_dic = defaultdict(list)
    for i, j in enumerate(words):
        index_dic[j].append(i)
    for e in index_dic.keys():
        if len(index_dic[e]) != 2:
            del index_dic[e]
    temp = [0 for x in range(len(words))]
    for i, j in enumerate(words):
        if j in index_dic.keys():
            temp[i] = j
    temp = [x for x in temp if x != 0]
    return not check_3(temp)


def check_3(words):
    temp = list()
    for each in words:
        if len(temp) == 0:
            temp.append(each)
            continue
        if temp.pop() == each:
            return False
        else:
            temp.append(each)
    return True


checkers.extend((check_1, check_3, check_2))

for each in checkers:
    if not each(input_words):
        print "Dislike", " by " + str(each)
        exit(0)
print "like"
相關文章
相關標籤/搜索