小易喜欢的单词(正则表达式)

Posted 千彧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小易喜欢的单词(正则表达式)相关的知识,希望对你有一定的参考价值。

题目描述

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

输入描述:

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

输出描述:

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

输入

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 }

 

以上是关于小易喜欢的单词(正则表达式)的主要内容,如果未能解决你的问题,请参考以下文章

使用正则表达式获取标签中的第一个单词

用于在 = 和 ; 之间捕获单词的正则表达式

网易2017春招笔试真题编程题集合(10)——小易记单词

python3 喜欢的单词

python 正则表达式

正则表达式将带连字符的单词与无连字符的查询匹配