欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

查找——小易喜欢的单词

程序员文章站 2022-05-06 19:10:04
大家好,我是小黄呀题目链接题目大意输入一行字符串,如果符合如下三条,输出"Dislikes",否则,输出"Likes"单词中有小写单词中有连续相等的字母单词中有形如"xyxy"的子序列,并且子序列可能不连续,例如"THETXH"中包含"THTH"思路分析方法一:直接模拟三种情况,前两个要求容易,主要是第三个要求,暴力解法,用四个循环来模拟。。。方法二:新学的python正则表达式,直接匹配。具体代码方法一:#includeusi...
大家好,我是小黄呀

题目链接

题目大意

输入一行字符串,如果符合如下三条,输出"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

相关标签: # 牛客网