小易喜欢的单词(小易喜欢的单词具有以下特性: 1.单词每个字母都是大写字母 2.单词没有连续相等的字母 3.单词没有形如“xyxy”这样的子序列,子序列可能不连续。)

小易喜欢的单词

题目描述

小易喜欢的单词具有以下特性:
1.单词每个字母都是大写字母
2.单词没有连续相等的字母
3.单词没有形如“xyxy”(这里的x,y指的都是字母,并且可以相同)这样的子序列,子序列可能不连续。
例如:
小易不喜欢"ABBA",因为这里有两个连续的'B'
小易不喜欢"THETXH",因为这里包含子序列"THTH"
小易不喜欢"ABACADA",因为这里包含子序列"AAAA"
小易喜欢"A","ABA"和"ABCBA"这些单词
给你一个单词,你要回答小易是否会喜欢这个单词(只要不是不喜欢,就是喜欢)。

输入描述:

输入为一个字符串,都由大写字母组成,长度小于100

输出描述:

如果小易喜欢输出"Likes",不喜欢输出"Dislikes"

示例1

输入
AAA
输出
Dislikes

分析:

排除小易不喜欢的的三种情况,就为喜欢。
情况一:全部大写,s.toUpperCase() != s,则说明没有大写,返回"Dislikes";
情况二:不能有连续字母,遍历字符串s,若有连续字符,返回"Dislikes";
情况三:不能有形如“xyxy”的子序列,i指针遍历字符串s,j指针从i+1的位置开始向后遍历,查找有没有与i位置相同的字符,
若找到,则判断j后的字符串中是否包含i和j中间字符的任意一个,包含说明存在“xyxy”的子序列,返回"Dislikes";
               举例,如"THETXH",查找到索引为0的'T'与索引为3的'T'相同,再判断从索引3后组成的字符串"XH"中是否包含"H"或"E".
排除三种情况,就返回返回"Likes"。

代码:

import java.util.*;
public class Main{
    public static void main(String[] args){
       System.out.println(solution());
    }
    public static String solution(){
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        if(s.toUpperCase() != s){
            return "Dislikes";
        }
        for(int i=0; i

 

你可能感兴趣的:(牛客)