题解 | #密码强度等级#

密码强度等级

https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361

// HJ87 密码强度等级.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include<iostream>
#include<bits/stdc++.h>

using namespace std;

int judge_length(string s)
{
	int score = 0;
	int len = s.size();
	if (len <= 4)
	{
		score = 5;
	}
	else if (len >= 5 && len <= 7)
	{
		score = 10;
	}
	else
	{
		score = 25;
	}
	//cout << score << endl;
	return score;
}
int judge_alpha(string s)
{
	int score = 0;
	int capital = 0;
	int lower = 0;
	for (int i = 0; i < s.size(); i++)
	{
		if (isalpha(s[i]))
		{
			if (isupper(s[i]))
			{
				capital++;
			}
			else if (islower(s[i]))
			{
				lower++;
			}
		}
	}
	if (capital > 0&&lower>0)
	{
		score = 20;
	}
	else if (capital > 0 || lower > 0)
	{
		score = 10;
	}
	else
	{
		score = 0;
	}
	//cout << score << endl;
	return score;
}
int judge_digit(string s)
{
	int score = 0;
	int count = 0;
	for (int i = 0; i < s.size(); i++)
	{
		if (isdigit(s[i]))
		{
			count++;
		}
	}
	if (count == 0)
	{
		score = 0;
	}
	else if (count == 1)
	{
		score = 10;
	}
	else
	{
		score = 20;
	}
	//cout << score << endl;
	return score;
}
int judge_symbol(string s)
{
	int score = 0;
	int alpha = 0;
	int digit = 0;
	int count = 0;
	int len = s.size();
	for (int i = 0; i < len; i++)
	{
		if (isalpha(s[i]))
		{
			alpha++;
		}
		else if (isdigit(s[i]))
		{
			digit++;
		}
		else
		{
			count++;
		}
	}
	if (count == 0)
	{
		score = 0;
	}
	else if (count == 1)
	{
		score = 10;
	}
	else
	{
		score = 25;
	}
	//cout << score << endl;
	return score;
}
int judge_award(string s)
{
	int score = 0;
	int alpha = 0;
	int big_alpha = 0, s_alpha = 0;
	int digit = 0;
	int count = 0;
	for (int i = 0; i < s.size(); i++)
	{
		if (isalpha(s[i])&& isupper(s[i]))
		{
			alpha++; big_alpha++;
		}
		else if (isdigit(s[i]))
		{
			digit++;
		}
		else if (isalpha(s[i]) && islower(s[i]))
		{
			s_alpha++;
		}
		else
		{
			count++;
		}
	}
	if(big_alpha > 0 && s_alpha > 0 && digit > 0 && count > 0)
	{
		score = 5;
	}
	else if (alpha > 0 && digit > 0 && count > 0)
	{
		score = 3;
	}
	else if (alpha > 0 && digit > 0)
	{
		score = 2;
	}
	//cout << score << endl;
	return score;
}
int main()
{
	string s;
	while (cin >> s)
	{
		int score = 0;
		score = judge_length(s) + judge_alpha(s) + judge_digit(s) + judge_symbol(s) + judge_award(s);
		//cout << score << endl;
		if (score >= 90)
		{
			cout << "VERY_SECURE" << endl;
		}
		else if (score >= 80)
		{
			cout << "SECURE" << endl;
		}
		else if (score >= 70)
		{
			cout << "VERY_STRONG" << endl;
		}
		else if (score >= 60)
		{
			cout << "STRONG" << endl;
		}
		else if (score >=50)
		{
			cout << "AVERAGE" << endl;
		}
		else if (score >= 25)
		{
			cout << "WEAK" << endl;
		}
		else
		{
			cout << "VERY_WEAK" << endl;
		}
	}
	return 0;
}

全部评论

相关推荐

点赞 评论 收藏
分享
04-06 16:59
已编辑
河南工业大学 Java
牛牛牛的牛子:最好扔了,实在没有选择的选择
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务