【华为上机真题】密码要求

news2024/9/24 1:18:18

🎈 作者:Linux猿

🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

🎈 关注专栏: 数据结构和算法成神路【精讲】优质好文持续更新中……🚀🚀🚀

🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬


目录

一、题目描述

1.2 输入描述

1.3 输出描述

二、解题思路

三、代码实现

四、时间复杂度


 

一、题目描述

密码要求:

1.长度超过8位;

2.包括大小写字母.数字.其它符号,以上四种至少三种;

3.不能有相同长度大于2的子串重复;

1.2 输入描述

一组或多组长度超过2的子符串。每组占一行

1.3 输出描述

如果符合要求输出:OK,否则输出NG

二、解题思路

本题是一道模拟题,按照密码要求一次检查即可。

(1)条件 1:如果字符串长度小于等于 8 位,则不符合要求;

(2)条件 2:计算有多少种字符,少于三种则不符合要求,可以使用数组计数或者位运算计数;

(3)条件 3:只需要判断长度为 3 的子串是否有重复即可,这个可通过两层 for 循环或者 find 函数来实现。

三、代码实现

代码实现如下所示。

#include <iostream>
#include <string>
using namespace std;

bool checkPasswd(string str)
{
    // 条件 1
    if (str.size() <= 8) {
        return false;
    }

    // 条件 2
    int n = str.size();
    int num = 0;
    for (int i = 0; i < n; ++i) {
        if (isupper(str[i])) {
            num |= 1;
        } else if (islower(str[i])) {
            num |= 2;
        } else if (str[i] >= '0' && str[i] <= '9') {
            num |= 4;
        } else {
            num |= 8;
        }
    }

    int m = 0;
    int p = 1;
    for (int i = 0; i < 4; ++i) {
        if (num & p) {
            m++;
        }
        p = p * 2;
    }
    if (m < 3) return false;

    // 条件 3
    for (int i = 0; i < n - 2; ++i) {
        int idx = str.find(str.substr(i, 3), 0);
        int idy = str.find(str.substr(i, 3), idx + 1);
        if (idy != -1) {
           return false;
        }
    }
    return true;
}

int main()
{
    string str;
    while (getline(cin, str)) {
        bool flag = checkPasswd(str);
        if (flag) {
            cout<<"OK"<<endl;
        } else {
            cout<<"NG"<<endl;
        }
    }
    return 0;
}

四、时间复杂度

时间复杂度:O(n + 3n^2)。

在上述代码中,假设字符串长度为 n,第一个 for 循环遍历字符种类的时间复杂度为 O(n),计算是否存在子串的时间复杂度为 O(3n^2),所以总的时间复杂度为 O(n + 3n^2)。


🎈 感觉有帮助记得「一键三连支持下哦!有问题可在评论区留言💬,感谢大家的一路支持!🤞猿哥将持续输出「优质文章回馈大家!🤞🌹🌹🌹🌹🌹🌹🤞


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/181496.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Pytorch——anaconda环境下安装GPU版本

首先查看自己 CUDA 搜索 点击 系统信息 可以看到&#xff0c;我的CUDA 是 11.1版本 随后上官网查找匹配的 pytorch 、torchvision、torchaudio 版本 Previous PyTorch Versions | PyTorch 然后直接对 .whl 文件进行下载 https://download.pytorch.org/whl/torch_stable.ht…

操作系统-进程管理

一、进程的组成和状态 1、操作系统的作用:通过资源管理提高计算机系统的效率改善人机界面向用户提供友好的工作环境。 2、操作系统的特征:并发性、共享性、虚拟性、不确定性。 3、操作系统的功能:进程管理、存储管理、文件管理、设备管理、作业管理。 4、操作系统的分类:批处理…

创业青年张继群:数智强农 现代农业加“数”前行

富贵险中求,也在险中丢,求时十之一,丢时十之九。 大丈夫行事,当摒弃侥幸之念,必取百炼成钢,厚积分秒之功,始得一鸣惊人。 央广网南宁1月11日消息(记者罗兰 通讯员张思颖)“经过此次比赛,在今后的推广中,我们会深入思考到底怎样才能把智慧农业做好,到底怎样才能真…

程序员为什么要写技术博客?都在哪些平台呢?

目录 一、程序员为什么要写技术博客&#xff1f; 1、真正掌握技术 2、没有人会那么在意你 3、珍惜时间 4、懒于思考&#xff0c;疏于总结 5、碎片化学习 6、优秀大神 7、更好的求职机会 8、努力的人一直都有 二、程序员都在哪些平台写技术博客呢&#xff1f; 1、git…

Python 采集免费代理,并检测其是否可用

本篇博客将采集互联网中公开代理 IP&#xff0c;并通过 IP 检测站点检测代理的可用性。 未来该内容将会被集成到 爬虫训练场 中。 &#x1f4b0;学习目录&#x1f4b0;Python 采集免费代理 IP模块准备与目标站点说明实战采集代理 IP 可用性检测对接站点为何使用代理 IP&#xf…

9. 使用SMTP发送邮件

1. SMTP协议 SMTP&#xff08;Simple Mail Transfer Protocol&#xff09;即简单邮件传输协议, 它是一组用于传送邮件的规则&#xff0c;由它来控制信件的中转方式。 SMTP是发送邮件的协议&#xff0c;python内置对SMTP的支持&#xff0c;可以发送纯文本邮件、HTML邮件以及带附…

python学习 --- 字符串基础

目录 一、字符串的驻留机制 1、驻留机制 2、驻留机制的几种情况&#xff08;使用交互模式&#xff09; 3、强制驻留 4、字符串驻留机制的优缺点 二、字符串的常用操作 1、字符串的查询操作 2、字符串大小写转换操作 3、字符串内容对齐操作 4、字符串劈分操作 5、判断…

【c语言进阶】动态内存管理知识大全(下)

&#x1f680;write in front&#x1f680; &#x1f4dc;所属专栏c语言学习 &#x1f6f0;️博客主页&#xff1a;睿睿的博客主页 &#x1f6f0;️代码仓库&#xff1a;&#x1f389;VS2022_C语言仓库 &#x1f3a1;您的点赞、关注、收藏、评论&#xff0c;是对我最大的激励和…

AxMath使用教程+常用符号与公式(持续更新中)

前言 这两天学了学Latex&#xff0c;主要是为了以后写毕业论文做铺垫&#xff0c;而且Latex在数学公式这一方面&#xff0c;要比Word方便许多&#xff0c;于是我就下载了一款国产的公式编辑器——AxMath。永久会员不贵&#xff0c;只要36元&#xff0c;而且软件很好用&#xf…

vue全家桶(一)基础知识

vue全家桶&#xff08;一&#xff09;1.vue基本使用2.vue模板语法1.差值表达式2.指令1.什么是指令2.数据绑定指令3.双向数据绑定4.事件绑定4.1click4.2事件修饰符4.3按键修饰符4.4属性绑定4.5-指令v-model的本质4.6 样式绑定4.6.1 class样式处理4.6.2 style样式处理4.7 分支循环…

Pytorch深度强化学习案例:基于DQN实现Flappy Bird游戏与分析

目录1 案例介绍2 构造深度Q网络3 经验回放与目标网络4 训练流程5 实验分析1 案例介绍 Flappy Bird是一款由来自越南的独立游戏开发者Dong Nguyen所开发的作品&#xff0c;于2013年5月24日上线。 在Flappy Bird中&#xff0c;玩家只需要用一根手指来操控&#xff1a;点击一次屏…

P49 BFC 块级格式化上下文 块级格式化上下文 BFC渲染区域: 创建BFC的元素,它的自动高度需要计算浮动元素. 高度塌陷例子

目录块级格式化上下文BFC渲染区域:创建BFC的元素&#xff0c;它的自动高度需要计算浮动元素.高度塌陷例子&#xff1a;第一种方法 clearfix::after第二种解决办法 :绝对定位第三种解决办法&#xff1a;overflow: scroll;第四种方法&#xff1a;clearfix hidden创建BFC的元素&am…

21版本FL Studio水果音乐制作软件下载

因为对音乐有一些了解&#xff0c;所以周边有不少朋友会问我很多关于音乐的问题&#xff0c;其中比较多是学习音乐到底用哪款软件比较好。每次遇到这样的问题&#xff0c;我都会告诉他们&#xff0c;就是我一直在用的音乐制作软件FL Studio。音乐制作软件FL Studio&#xff0c;…

【JavaGuide面试总结】Java集合篇·中

【JavaGuide面试总结】Java集合篇中1.Collection 子接口之 SetComparable 和 Comparator 的区别比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同2.Collection 子接口之 QueueQueue 与 Deque 的区别ArrayDeque 与 LinkedList 的区别说一说 PriorityQueue3.Map 接口HashMap 的…

机器学习(八):深度学习简介

文章目录 深度学习简介 一、神经网络简介 二、深度学习各层负责内容 深度学习简介 一、神经网络简介 深度学习&#xff08;Deep Learning&#xff09;&#xff08;也称为深度结构学习【Deep Structured Learning】、层次学习【Hierarchical Learning】或者是深度机器学习【…

React中commit阶段发生了什么

对于commit阶段的主要工作是循环effectList链表去将有更新的fiber节点应用到页面上是commit的主要工作。 EffectList 什么是副作用&#xff1f; 函数在执行过程中对外部造成的影响可以称之为副作用&#xff0c;副作用包含的类型很多&#xff0c;比如说标记值为Placement时&a…

客快物流大数据项目(一百零九):Spring Boot概述

文章目录 Spring Boot概述 一、什么是SpringBoot 二、​​​​​​​为什么要学习Spring Boot

PHP转Go实践:xjson解析神器「开源工具集」

前言 近期会更新一系列开源项目的文章&#xff0c;新的一年会和大家做更多的开源项目&#xff0c;也欢迎大家加入进来。 xutil 今天分享的文章源自于开源项目jinzaigo/xutil的封装。 在封装过程中&#xff0c;劲仔将实现原理以及相关实践思考&#xff0c;写成文章分享出来&am…

Python3学习——条件控制、循环语句与迭代器

目录 一、编程第一步——斐波那契数列 二、条件控制 (一)if/else语句 判断狗狗的年龄&#xff1a; (二)多层if/else嵌套 判断数字能否被2或3整除&#xff1a; (三)match...case匹配——python3中新增 根据数字判断星期&#xff1a; 三、循环语句 (一)while循环 1.循环…

Java:Idea创建项目和Spring工程基本使用

一、创建项目 1、创建新的空的项目&#xff1a; Empty Project–next 2、定义项目的名称&#xff0c;并指定位置 3、对项目进行设置&#xff0c;JDK版本、编译版本 4、添加模块信息 5、修改maven路径 6、项目目录结构 二、搭建Spring的框架 1、在核心配置文件中添加Spring的j…