zhuqiran12311 @ 2024-07-23 11:27:00
#include<bits/stdc++.h>
#define ll long long int
using namespace std;
bool check(string s)
{
int len=s.length();
if(len<6||len>12) return false;
bool dxzm=false,xxzm=false,sz=false,tszf=false;
for(int i=0;i<len;i++)
{
if(s[i]>='A'&&s[i]<='Z')
{
dxzm=true;
}
else if(s[i]>='a'&&s[i]<='z')
{
xxzm=true;
}
else if(s[i]>='0'&&s[i]<='9')
{
sz=true;
}
else if(s[i]=='!'||s[i]=='@'||s[i]=='#'||s[i]=='$')
{
tszf=true;
}
else
{
return false;
}
}
if(tszf&&dxzm+xxzm+sz>=2);
{
return true;
}
return false;
}
int main()
{
string s;
cin>>s;
int len=s.length();
int pos=0;
for(int i=0;i<len;i++)
{
if(s[i]==',')
{
string s1=s.substr(pos,i-pos);
if(check(s1)) cout<<s1<<endl;
pos=i+1;
}
else if(i==len-1)
{
string s1=s.substr(pos,i-pos+1);
if(check(s1)) cout<<s1<<endl;
}
}
return 0;
}
by LiXinLong_LXL @ 2024-07-31 10:49:32
字符串的第一位的下标为0,不为1,那么你check()函数中的这一步就有问题了:
if(len<6||len>12) return false;
如果s1这个字符串长度为5的话那么它实际上是有六个字符的。
同理,如果是长度为11的字符串实际上有12个字符。
所以你应该这样改
if(len<5||len>11) return false;
by zhuqiran12311 @ 2024-08-02 09:25:18
谢谢大佬
by zhuqiran12311 @ 2024-08-02 09:26:45
还是没过
by zhuqiran12311 @ 2024-08-02 21:27:34
@LiXinLong_LXL 我找到错误了,是一个if多了一个分号
by mdxz114514 @ 2024-08-02 21:27:52
已线下修改
if(tszf&&dxzm+xxzm+sz>=2);
去掉逗号
by mdxz114514 @ 2024-08-02 21:28:28
@mdxz114514 是分号,口误
by LiXinLong_LXL @ 2024-08-03 15:11:55
@zhuqiran12311 没错没错,我都没看到这个分号。