小易喜欢的单词具备如下特性:
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"