小易喜歡的單詞

HowieLee59發表於2018-10-12

小易喜歡的單詞具有以下特性:
1.單詞每個字母都是大寫字母
2.單詞沒有連續相等的字母
3.單詞沒有形如“xyxy”(這裡的x,y指的都是字母,並且可以相同)這樣的子序列,子序列可能不連續。
例如:
小易不喜歡"ABBA",因為這裡有兩個連續的'B'
小易不喜歡"THETXH",因為這裡包含子序列"THTH"
小易不喜歡"ABACADA",因為這裡包含子序列"AAAA"
小易喜歡"A","ABA"和"ABCBA"這些單詞
給你一個單詞,你要回答小易是否會喜歡這個單詞(只要不是不喜歡,就是喜歡)。 

輸入描述:

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

輸出描述:

如果小易喜歡輸出"Likes",不喜歡輸出"Dislikes"

示例1

輸入

AAA

輸出

Dislikes

題解參考西電的一位學長所寫的程式碼。

import java.util.Scanner;
public class Main {
  
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            String word = sc.next();
             
            if(isAllUpCase(word) && isConEql(word) && isThrEql(word))
                System.out.println("Likes");
            else
                System.out.println("Dislikes");
        }
    }
    //條件1
     public static boolean isAllUpCase(String word){
        return word.matches("[A-Z]+");
    }
    //條件2
    public static boolean isConEql(String word){
        return !word.matches(".*(.)(\\1).*");
    }
    //條件3
    public static boolean isThrEql(String word){
        return !word.matches(".*(.).*(.)(.*\\1)(.*\\2).*");
    }
}

神一般的正規表示式---

其中.表示匹配除換行符 \n 之外的任何單字元,(\1)表示引用第一個括號中的方法,相當於引用函式了,同理(\2)表示呼叫第二個括號中的函式。

相關文章