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