2020/9/11 360/英特尔笔试题

二、验证密码复杂性

题目大意:
给你一个字符串,这个字符串必须满足以下五个条件

  1. 要有数字
  2. 要有大写字母
  3. 要有小写字母
  4. 要有特殊字符
  5. 子字符串长度不小于8

 

首先这道题目输入输出就很坑,是不定长的字符串输出,建议用C++ while(getline(cin,str)); 其次这里特殊字符没有说是哪些,所以是在Asics码中除了数字和字母的任何字符都可以,这里和现实场景中我们想象可能有区别。

作者:312的LG
链接:https://www.nowcoder.com/discuss/507414?type=0&order=7&pos=37&page=1&source_id=discuss_center_0&channel=1009
来源:牛客网

#include
#include
#include
using namespace std;
 
int main() {
    string s;
    vector res;
    while (cin >> s) {
        res.push_back(s);
        if (cin.get() == '\0')
            break;
    }
    int len = res.size();
    for (int i = 0; i < len; i++) {
        int num = res[i].size();
        string tem = res[i];
        int flag = 0;
        int flag1 = 0;
        int flag2 = 0;
        int flag3 = 0;
        if (num >= 8) {
            for (int j = 0; j < num; j++) {
                if ((tem[j] >= 'a') && (tem[j] <= 'z') ){
                    flag++;
                    continue;
                }
                else if ((tem[j] >= 'A') && (tem[j] <= 'Z')) {
                    flag1++;
                    continue;
                }
                else if ((tem[j] >= '0') && (tem[j] <= '9')) {
                    flag2++;
                    continue;
                }
                else  {
                    flag3++;
                    continue;
                }
                if ((flag > 0 )&& (flag1 > 0 )&& (flag2 > 0 )&& (flag3 > 0)) {
                    cout << "Ok" << '\n';
                    break;
                }
            }
            if ((flag > 0 )&& (flag1 > 0) && (flag2 > 0 )&& ( flag3 > 0))
                cout << "Ok" << '\n';
            else
                cout << "Irregular password" << '\n';
        }
        else
            cout << "Irregular password" << '\n';
    }
    return 0;
}

 

英特尔笔试特别坑,纯C写。

1. 基本计算器,处理() + - , 还要先手写个栈。。。

2. 链表的快排,比较冷门

3. 将空格换成”\t"

 

因特尔的风格很偏。。。

你可能感兴趣的:(算法)