查找——小易喜欢的单词

2022-08-01,,

大家好,我是小黄呀

题目链接

题目大意

输入一行字符串,如果符合如下三条,输出"Dislikes",否则,输出"Likes"

  1. 单词中有小写
  2. 单词中有连续相等的字母
  3. 单词中有形如"xyxy"的子序列,并且子序列可能不连续,例如"THETXH"中包含"THTH"

思路分析

  1. 方法一:直接模拟三种情况,前两个要求容易,主要是第三个要求,暴力解法,用四个循环来模拟。。。
  2. 方法二:新学的python正则表达式,直接匹配。

具体代码

方法一:

#include<bits/stdc++.h>

using namespace std;

//条件3check
int check(string a)
{
    int cnt=0;
    for(int i=0;i<a.size()-3;i++)
        for(int j=i+1;j<a.size()-2;j++)
            for(int k=j+1;k<a.size()-1;k++)
                for(int l=k+1;l<a.size();l++)
                {
                    if(a[i]==a[k]&&a[j]==a[l])
                         cnt++;
                }
    return cnt;
}

int main()
{
    bool flag = true;
    string s;
    cin>>s;
    for(int i=0;i<s.size();i++)
    {
    	//条件一
        if(s[i]>='a'&&s[i]<='z')
            flag = false;
        //条件二
        if(i>0&&s[i]==s[i-1])
            flag = false;
        //条件三
        if(s.size()>=4&&check(s)==1)
            flag = false;
    }
    if(flag==false)
        cout<<"Dislikes"<<endl;
    else
        cout<<"Likes"<<endl;
    return 0;
}

方法二:

链接:
import sys
import re
 
if __name__ == "__main__":
    pattern1 = re.compile(r"[^A-Z]+")
    pattern2 = re.compile(r"([A-Z])\1")
    pattern3 = re.compile(r"([A-Z])[A-Z]*([A-Z])[A-Z]*\1[A-Z]*\2")
     
    word = sys.stdin.readline()
    word = word.rstrip('\n')
    if pattern1.search(word) or pattern2.search(word) or pattern3.search(word):
        print("Dislikes")
    else:
        print("Likes")

本文地址:https://blog.csdn.net/weixin_44529208/article/details/107571246

《查找——小易喜欢的单词.doc》

下载本文的Word格式文档,以方便收藏与打印。