小易喜歡的單詞(正則表達式)
阿新 • • 發佈:2018-05-02
ati code 組成 長度 question 這樣的 () public 數字
1.單詞每個字母都是大寫字母
2.單詞沒有連續相等的字母
3.單詞沒有形如“xyxy”(這裏的x,y指的都是字母,並且可以相同)這樣的子序列,子序列可能不連續。
例如:
小易不喜歡"ABBA",因為這裏有兩個連續的‘B‘
小易不喜歡"THETXH",因為這裏包含子序列"THTH"
小易不喜歡"ABACADA",因為這裏包含子序列"AAAA"
小易喜歡"A","ABA"和"ABCBA"這些單詞
給你一個單詞,你要回答小易是否會喜歡這個單詞。
示例1
題目描述
小易喜歡的單詞具有以下特性:1.單詞每個字母都是大寫字母
2.單詞沒有連續相等的字母
3.單詞沒有形如“xyxy”(這裏的x,y指的都是字母,並且可以相同)這樣的子序列,子序列可能不連續。
例如:
小易不喜歡"ABBA",因為這裏有兩個連續的‘B‘
小易不喜歡"THETXH",因為這裏包含子序列"THTH"
小易不喜歡"ABACADA",因為這裏包含子序列"AAAA"
小易喜歡"A","ABA"和"ABCBA"這些單詞
給你一個單詞,你要回答小易是否會喜歡這個單詞。
輸入描述:
輸入為一個字符串,都由大寫字母組成,長度小於100
輸出描述:
如果小易喜歡輸出"Likes",不喜歡輸出"Dislikes"
輸入
AAA
輸出
Dislikes
1 import java.util.Scanner; 2 3 /** 4 * 5 * 小易喜歡的單詞 6 * @author Dell 7 * 8 */ 9 public class Main { 10 11 static public String str = "ABACADA"; 12 13 static public Boolean isLike = true; 14 15 static public String f() { 16 //正則表達式 17 // 匹配 A-Z之間的數18 if (!str.matches("[A-Z]+")) { 19 isLike = false; 20 } 21 // \\1 22 // 向前引用的意思。 23 // 比如前面用括號捕獲了一個子匹配,斜杠數字就表示和子匹配一樣的內容,第一個子匹配就是\1,第二就是\2 24 if (str.matches(".*(.)(\\1).*")) { 25 isLike = false; 26 } 27 if (str.matches(".*(.).*(.).*(\\1).*(\\2).*")) {28 isLike = false; 29 30 } 31 if (isLike== true) { 32 return "Likes"; 33 }else { 34 return "Dislikes"; 35 } 36 } 37 38 public static void main(String[] args) { 39 Scanner sc = new Scanner(System.in); 40 str = sc.nextLine().trim(); 41 42 System.out.println( f()); 43 } 44 }
小易喜歡的單詞(正則表達式)