小易喜欢的单词具有以下特性:
1.单词每个字母都是大写字母
2.单词没有连续相等的字母
3.单词没有形如“xyxy”(这里的x,y指的都是字母,并且可以相同)这样的子序列,子序列可能不连续。
例如:
小易不喜欢"ABBA",因为这里有两个连续的'B'
小易不喜欢"THETXH",因为这里包含子序列"THTH"
小易不喜欢"ABACADA",因为这里包含子序列"AAAA"
小易喜欢"A","ABA"和"ABCBA"这些单词
给你一个单词,你要回答小易是否会喜欢这个单词(只要不是不喜欢,就是喜欢)。
输入描述:
输入为一个字符串,都由大写字母组成,长度小于100
输出描述:
如果小易喜欢输出"Likes",不喜欢输出"Dislikes"
示例1
输入
AAA
输出
Dislikes
c++
#include<iostream>
#include<string>
using namespace std;
int main(){
string a;
cin>>a;
int len = a.length();
//下面的for循环只到len-2,所以额外判断len-1
// 条件一 :判断大小写
if(a[len-1]<'A' || a[len-1]>'Z'){
cout<<"Dislikes"<<endl;
return 0;
}
for(int i=0; i<len-1; i++){
//条件一:是否都是大写字母
if(a[i]<'A' || a[i]>'Z'){
cout<<"Dislikes"<<endl;
return 0;
}
//条件二:是否有连续相等字母
if(a[i] == a[i+1]){
cout<<"Dislikes"<<endl;
return 0;
}
//将只出现一次的字母换成0 因为只出现一次的无法形成“xyxy”形式
for(int j=i+1; j<len; j++){
if(a[i] == a[j])
continue;
//从i位置之后的1个字符 换成 “0”
a.replace(i, 1, "0");
}
}
//将为0的删除
for(int i=0; i<len; i++){
if(a[i] == 0){
//删除从i开始的1个字符
a.erase(i, 1);
}
}
//重新获取长度
len = a.length();
//如果长度<1
if(len < 1){
cout<<"Dislikes"<<endl;
return 0;
}
//找出跟第0个位置一样的字符,记住它位置
int j;
for(int i=0; i<len; i++){
if(a[i] == a[0]){
j=i;
break;
}
}
//判断每一次字符串是不是重复出现
for(int i=0; i<j; i++){
if(a[i] != a[i+j]){
cout<<"Dislikes"<<endl;
return 0;
}
}
cout<<"Likes"<<endl;
return 0;
}
python
# -*- coding: UTF-8 -*-
string = raw_input()
length = len(string)
flag = 1
#条件一:判断是否全为大写字母
if string.upper() != string:
flag = 0
if string.upper() == string:
#条件三:判断是否有相邻重复字母
for i in range(length-1):
if string[i] == string[i+1]:
flag = 0
break
#条件二:先寻找当前字母之后是否有相同字母
for i in range(length-3):
x1 = string.find(string[i], i+2)
if x1 == -1:
continue
else:
#i+1位置字母与找到的位置之后是否有相同字母 有则符合xyxy形式
for j in range((i+1), x1):
x2 = string.find(string[j], (x1+1))
if x2>0:
flag = 0
break
if flag==0:
print 'Dislikes'
else:
print 'Likes'
java
import java.io.*;
public class Main{
public static void main(String[] args)throws Exception{
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
String s=reader.readLine();
char[] c=s.toCharArray();
boolean flag=true;
for(int i=0;i<c.length;i++){
if(!('A'<=c[i]&&c[i]<='Z')){
flag=false;
}
if(i+1<c.length&&c[i]==c[i+1]){
flag=false;
}
if(i+3<c.length&&c[i]==c[i+2]&&c[i+1]==c[i+3]){
flag=false;
}
if(!flag){
break;
}
}
if(flag){
System.out.println("Likes");
}else{
System.out.println("Dislikes");
}
}
}