顺丰笔试 顺丰笔试题 0829
笔试时间:2024年08月29日 秋招
历史笔试传送门:2023秋招笔试合集
第一题
题目
小明在编程中在函数名和变量名中使用以下两种命名方法:小驼峰命名法:除第一个单词外,其余单词首字母大写,例如:newFunc, myVariable, myFirstName。下划线命名法:所有单词均小写,并且用一个下划线连接,例如:new_func, my_variable, my_first_name。现在小明列出了他部分代码中的所有函数名,他想知道这些函数名是否是下划线命名法,由于编程时可能存在的错误,有些函数名可能是下划线命名法,也不是下划线命名法。现在他将他的函数名使用的是小驼峰命名法还是下划线命名法输出;如果是下划线命名法,直接输出;若都是不是,则输出“indistinct”。1 ≤ n ≤ 400。
输入描述
第一行是一个整数n,表示有n个函数名。
接下来n行,每行一个字符串,保证每个字符串只包含小写字母和下划线,字符串长度均不超过30。
输出描述
输出n行,第i行表示按照问题描述中对输入中的第i个函数名的判断结果。
样例输入
6
MyLastName
sampleFunc
inputSampleTestTwo
indistinct_Sample
another__sample
another_sample_
样例输出
indistinct
sample_func
input_sample_test_two
indistinct
indistinct
indistinct
参考题解
模拟。
C++:[此代码未进行大量数据的测试,仅供参考]
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
bool isaA(const string& str) {
if (str.empty() || !islower(str[0])) return false;
for (char c : str) {
if (c == '_') return false;
}
return true;
}
bool is_a(const string& str) {
if (str.empty() || str[0] =='_') return false;
if (str.find("__") != string::npos) return false;
for(int i = 0; i < str.size(); i ++)
{
if(isupper(str[i])) return false;
if(str[i] == '_' && i + 1 >= str.size()) return false;
}
return true;
}
string aAto_a(const string& str) {
string result;
for (char c : str) {
if (isupper(c)) {
result += '_';
result += tolower(c);
} else {
result += c;
}
}
return result;
}
int main() {
int n;
cin >> n;
for (int i = 0; i < n; ++i) {
string str;
cin >> str;
if (isaA(str)) {
cout << aAto_a(str) << endl;
} else if (is_a(str)) {
cout << str << endl;
} else {
cout << "indistinct" << endl;
}
}
return 0;
}
Java:[此代码未进行大量数据的测试,仅供参考]
import java.util.Scanner;
public class Main {
// 判断字符串是否为驼峰命名法 (camelCase)
public static boolean isaA(String str) {
if (str.isEmpty() || !Character.isLowerCase(str.charAt(0))) return false;
for (char c : str.toCharArray()) {
if (c == '_') return false;
}
return true;
}
// 判断字符串是否为下划线命名法 (snake_case)
public static boolean is_a(String str) {
if (str.isEmpty() || str.charAt(0) == '_') return false;
if (str.contains("__")) return false;
for (int i = 0; i < str.length(); i++) {
if (Character.isUpperCase(str.charAt(i))) return false;
if (str.charAt(i) == '_' && i + 1 >= str.length()) return false;
}
return true;
}
// 将驼峰命名法 (camelCase) 转换为下划线命名法 (snake_case)
public static String aAto_a(String str) {
StringBuilder result = new StringBuilder();
for (char c : str.toCharArray()) {
if (Character.isUpperCase(c)) {
result.append('_');
result.append(Character.toLowerCase(c));
} else {
result.append(c);
}
}
return result.toString();
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
持续收录字节、腾讯、阿里、美团、美团、拼多多、华为等笔试题解,包含python、C++、Java多种语言版本,持续更新中。