当前位置: 首页 > news >正文

牛客网之华为机试题:密码验证程序

一. 简介

本文记录牛客网上华为机试题,涉及字符串处理的题目:密码验证合格程序。

二. 牛客网之华为机试题:简单错误记录

描述

你需要书写一个程序验证给定的密码是否合格。

合格的密码要求:

∙ ∙长度不少于 88 位

∙ ∙必须包含大写字母、小写字母、数字、特殊字符中的至少三种

∙ ∙不能分割出两个独立的、长度大于 22 的连续子串,使得这两个子串完全相同;更具体地,如果存在两个长度大于 22 的独立子串 s1,s2s1​,s2​ ,使得 s1=s2s1​=s2​ ,那么密码不合法。

子串为从原字符串中,连续的选择一段字符(可以全选、可以不选)得到的新字符串。

可见字符集为 ASCII 码在 3333 到 126126 范围内的可见字符。您可以参阅下表获得其详细信息(您可能关注的内容是,这其中不包含空格、换行)。

解题思路如下:

1. 逐行循环获取密码字符串;

2. 首先,对密码长度进行检查;小于8则输出 NG;

3. 其次,遍历字符串中每个字符,检查是否满足大写字母,小写字母,数字,特殊字符至少存在三种;

4. 最后,检查密码中是否含有相同的子串(子串长度>2);

这里,子串长度固定为3;

C语言实现如下:

#include <ctype.h>
#include <stdio.h>
#include <string.h>int main() {int i;char buf[100] = {0};//逐行循环读取密码while(scanf("%s", buf) != EOF) {int len = strlen(buf);int same_flag = 0;int upper_flag = 0;int lower_flag = 0;int digit_flag = 0;int special_flag = 0;//长度不小于8if(len < 8) {printf("NG\n");continue;}else {//判断是否满足大写字母,小写字母,数字,特殊字符至少三种for(i = 0; i<len; i++) {if(buf[i]>=33 && buf[i] <=126) {if(buf[i]>='A' && buf[i]<='Z') {upper_flag=1;}else if(buf[i]>='a' && buf[i]<='z') {lower_flag=1;}else if(buf[i]>='0' && buf[i]<='9') {digit_flag=1;}else {special_flag=1;}}else {printf("NG\n");break;}}int cnt = upper_flag+lower_flag+digit_flag+special_flag;if((cnt < 3)) {printf("NG\n");}else {//长度满足,类型满足,最后判断是否存在相同的子串for(i=0; (same_flag==0)&&(i<len-5); i++) {for(int j=i+3; j<len-2; j++) {if((buf[i]==buf[j]) && (buf[i+1]== buf[j+1]) && (buf[i+2]==buf[j+2])) {same_flag = 1;}}}if(same_flag==1) {printf("NG\n");}else{printf("OK\n");}}}}return 0;
}

http://www.lryc.cn/news/604111.html

相关文章:

  • python-网络编程
  • Qt 移动应用性能优化策略
  • 板凳-------Mysql cookbook学习 (十二--------7)
  • Android User版本默认用test-keys,如何改用release-keys
  • 北方公司面试记录
  • 前端数据库:IndexedDB从基础到高级使用指南
  • 基于Prophet、滑动平均、加权平均的地铁客流量预测与可视化系统的设计与实现
  • Java【代码 17】httpclient PoolingHttpClientConnectionManager 连接池使用举例
  • 无穿戴动作捕捉技术:驱动历史活化、乐园叙事与教育沉浸的文旅利器
  • [Linux入门] Linux 部署本地 APT 仓库及 NFS 共享服务全攻略
  • 算法精讲:二分查找(一)—— 基础原理与实现
  • 7.28学习日志
  • ICT模拟零件测试方法--晶体管测试
  • 智能Agent场景实战指南 Day 23 : Agent安全与隐私保护
  • k8s搭建nfs共享存储
  • Ubuntu20.04安装和配置Samba实现Win11下共享文件夹
  • 工作中使用git可能遇到的场景
  • Leetcode 08 java
  • Linux笔记6——常用命令-5
  • 【核心技术一】Python异步编程深度解析
  • 基于springboot的零食商城的设计与实现/零食销售系统的设计与实现
  • 第2章 AB实验的关键问题
  • 全自动植树机solidwoeks图纸cad【7张】三维图+设计说明说
  • sqli-labs通关笔记-第25关GET字符注入(过滤or和and 脚本法)
  • QWebEngineProfile setCachePath无效
  • 对College数据进行多模型预测(R语言)
  • 青少年软件编程图形化Scratch等级考试试卷(三级)2025年6月
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(11):文法+单词
  • 层次分析法(Analytic Hierarchy Process,AHP)简介与简单示例
  • Qt 多线程数据库操作优化