合法密码,题目ID9681

比赛ID6685 题目ID9681

合法密码

Wrong Answer

80

提交记录

时间:0.2s 空间:64M

【题目描述】

给定一个密码,判断其是否合法。

要求:1.字符数在8到16之间(包含),2.至少包含字母、数字或符号中的两种。

编写一个函数,判断字符是数字字符还是字母字符还是其他字符

【输入描述】

一个不含空白字符的字符串(长度不超过100)。

【输出描述】

如果符合要求输出"YES", 否则输出"NO"。

【样例输入1】

mm666

【样例输出1】

NO

【样例输入2】

haha1234

【样例输出2】

YES

约定:

提示:

#include<bits/stdc++.h>
using namespace std;
bool a(string m){
	int len=m.size();
	if(len<8||len>16){
		return false;
	}
	return true;
}
bool b(string m){
	int len=m.size();
	int h=0;
	for(int i=0;i<len;i++){
		if((m[i]>='A'&&m[i]<='z')){
			h++;
		}
		if(m[i]>='1'&&m[i]<='9'){
			h++;
		}
		else{
			h++;
		}
	}
	if(h>=2){
		return true;
	}
	return false;
}
int main(){
	string m;
	cin>>m;
	if(a(m)&&b(m)){
		cout<<"YES";
	}
	else{
		cout<<"NO";
	}
	return 0;
}

Wrong Answer

80

放问题讨论区

??

我知道怎么错了,还有小写字母啊。

还有这,这不就变成了求它的长度了吗?

这样能包括大小写的吧

哦,我看错了

应该改成:

        int zm,sz,zf;
        zm=sz=zf=0;
        if((m[i]>='A'&&m[i]<='z')){
			zm++;
		}
		else if(m[i]>='1'&&m[i]<='9'){
			sz++;
		}
		else{
			zf++;
		}

A了,非常感谢!
:smile:

1 个赞

OK 给个解决方案哈

1 个赞

已经给你了 :smile:

1 个赞

如上图,还会多一些符号,改为:

if(m[i]>32&&m[i]<127){
		if(m[i]<='z'&&m[i]>='a'){
			h++;
		}
		else if(m[i]<='Z'&&m[i]>='A'){
			h++;
		}
		else{
			h++;
		}
	}

求赞和解决方案

2 个赞