美团笔试 美团笔试题 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多种语言版本,持续更新中。
顺丰集团工作强度 274人发布

