跳转至

小美的用户名#
发布于2021-04-16
上次编辑2021-04-16

问题描述#

小美是美团的前端工程师,为了防止系统被恶意攻击,小美必须要在用户输入用户名之前做一个合法性检查,一个合法的用户名必须满足以下几个要求:

  1. 用户名的首字符必须是大写或者小写字母。
  2. 用户名只能包含大小写字母,数字。
  3. 用户名需要包含至少一个字母和一个数字。
    如果用户名合法,请输出 "Accept",反之输出 "Wrong"。

格式:

输入:
- 输入第一行包含一个正整数 T,表示需要检验的用户名数量。
- 接下来有 T 行,每行一个字符串 s,表示输入的用户名。
输出:
- 对于每一个输入的用户名 s,请输出一行,即按题目要求输出一个字符串。

示例:

输入:
     5
     Ooook
     Hhhh666
     ABCD
     Meituan
     6666
输出:
     Wrong
     Accept
     Wrong
     Wrong
     Wrong

提示:

  • 1 <= T <= 100
  • s 的长度不超过 20

解题思路#

按照题意要求进行判断即可。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import sys

readline = sys.stdin.readline


def readint():
    return int(readline().strip())


def readstr():
    return readline().strip()


def readints():
    return list(map(int, readline().strip().split()))


for _ in range(readint()):
    s = readstr()
    n = len(s)
    flag = False
    if n >= 2 and s[0].isalpha():
        a = b = 0
        for c in s:
            if c.isdigit():
                a += 1
            elif c.isalpha():
                b += 1
        if a >= 1 and b >= 1 and a + b == n:
            flag = True
    print("Accept" if flag else "Wrong")
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <bits/stdc++.h>
using namespace std;
int main() {
    ios_base::sync_with_stdio(false), cin.tie(nullptr);
    int T = 1;
    cin >> T;
    while (T--) {
        string s;
        cin >> s;
        int n = s.size();
        bool flag = false;
        if (n >= 2 && isalpha(s[0])) {
            int a = 0, b = 0;
            for (char c : s) {
                if (isdigit(c)) {
                    ++a;
                } else if (isalpha(c)) {
                    ++b;
                }
            }
            if (a >= 1 && b >= 1 && a + b == n) {
                flag = true;
            }
        }
        cout << (flag ? "Accept\n" : "Wrong\n");
    }
    return 0;
}
返回顶部

在手机上阅读