美团笔试 美团笔试题 0817

笔试时间:2024年08月17日 秋招 开发

历史笔试传送门:2023秋招笔试合集

第一题

参考题解

这个正则表达式用于匹配国际电话号码,其中号码部分可以包含数字和井号。

C++:[此代码未进行大量数据的测试,仅供参考]

#include <iostream>
#include <vector>
#include <regex>

using namespace std;

// 检查是否为有效的电子邮件地址
bool isEmail(const string &str) {
    regex pattern("^[a-zA-Z0-9_]+@[a-zA-Z0-9_]+\\.com$");
    return regex_match(str, pattern);
}

// 检查是否为有效的IP地址
bool isIP(const string &str) {
    regex pattern("^(\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])$");
    return regex_match(str, pattern);
}

// 检查是否为有效的电话号码
bool isPhone(const string &str) {
    regex pattern("^\\+\\d+-\\d+-[\\d#]+$");
    return regex_match(str, pattern);
}

int main() {
    int n;
    cin >> n;
    cin.ignore(); // 忽略整数后的换行符

    vector<string> results;

    while (n-- > 0) {
        string input;
        getline(cin, input);

        if (isEmail(input)) {
            results.push_back("email");
        } else if (isIP(input)) {
            results.push_back("ip");
        } else if (isPhone(input)) {
            results.push_back("phone");
        } else {
            results.push_back("invalid");
        }
    }

    for (const auto &result : results) {
        cout << result << endl;
    }

    return 0;
}

Java:[此代码未进行大量数据的测试,仅供参考]

import java.util.Scanner;
import java.util.ArrayList;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class StringClassifier {

    // 检查是否为有效的电子邮件地址
    public static boolean isEmail(String str) {
        Pattern pattern = Pattern.compile("^[a-zA-Z0-9_]+@[a-zA-Z0-9_]+\\.com$");
        Matcher matcher = pattern.matcher(str);
        return matcher.matches();
    }

    // 检查是否为有效的IP地址
    public static boolean isIP(String str) {
        Pattern pattern = Pattern.compile("^(\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])$");
        Matcher matcher = pattern.matcher(str);
        return matcher.matches();
    }

    // 检查是否为有效的电话号码
    public static boolean isPhone(String str) {
        Pattern pattern = Pattern.compile("^\\+\\d+-\\d+-[\\d#]+$");
        Matcher matcher = pattern.matcher(str);
        return matcher.matches();
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();  // 读取输入的组数
        scanner.nextLine();  // 忽略整数后的换行符

        ArrayList<String> results = new ArrayList<>();
        while (n-- > 0) {
            String input = scanner.nextLine();

            if (isEmail(input)) {
                results.add("email");
            } else if (isIP(input)) {
                results.add("ip");
            } else if (isPhone(input)) {
                results.add("phone");
            } else {
                results.add("invalid");
            }
        }

        for (String result : results) {
            System.out.println(result);
        }

        scanner.close();
    }
}

Python:[此代码未进行大量数据的测试,仅供参考]

import re

# 检查是否为有效的电子邮件地址
def is_email(string):
    pattern = re.compile(r"^[a-zA-Z0-9_]+@[a-zA-Z0-9_]+\.com$")
    return pattern.match(string) is not None

# 检查是否为有效的IP地址
def is_ip(string):
    pattern = re.compile(r"^(\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])$")
    return pattern.match(string) is not None

# 检查是否为有效的电话号码
def is_phone(string):
    pattern = re.compile(r"^\+\d+-\d+-[\d#]+$")
    return pattern.match(string) is not None

def main():
    n = int(input())  # 读取输入的组数
    results = []

    for _ in range(n):
        input_string = input().strip()

        if is_email(input_string):
            results.append("email")
        elif is_ip(input_string):
            results.append("ip")
        elif is_phone(input_string):
            results.append("phone")
        else:
            results.append("invalid")

    for result in results:
        print(result)

if __name__ == "__main__":
    main()

第二题

题目

小美对 gcd (最大公约数) 很感兴趣,她会询问你t次。 每次询问给出一个大于1的正整数n,你是否找到一个数字 m (2 ≤ m ≤ n),使得 gcd(n,m)为素数。

输入描述

每个测试文件均包含多组测试数据。

第一行输入一个整数 T (1 ≤ T ≤

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2024 BAT笔试合集 文章被收录于专栏

持续收录字节、腾讯、阿里、美团、美团、拼多多、华为等笔试题解,包含python、C++、Java多种语言版本,持续更新中。

全部评论

相关推荐

1 2 评论
分享
牛客网
牛客企业服务