【秋招笔试】8.29顺丰秋招(开发岗)-三语言题解
🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试
💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导
✨ 本系列打算持续跟新
春秋招笔试题
👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸
✨ 笔试合集传送们 -> 🧷春秋招笔试合集
🍒 本专栏已收集
80+
套笔试题,笔试真题
会在第一时间跟新🍄 题面描述等均已改编,如果和你笔试题看到的题面描述不一样请理解,做法和题目本质基本不变。
🧩 备战秋招还没订阅的朋友们可以冲一下啦,当试题收集至
100
套后,价格会进行一波调整~🍹 感谢各位朋友们的订阅,你们的支持是我们创作的最大动力 💞
🪔 顺丰秋招笔试来啦!!!
🍥 本套难度不大,不过算法岗的选择很难!!
1️⃣ 按照题意模拟即可
2️⃣ 非常经典的状态压缩DP,适当剪枝的话DFS应该也可以过
🚙 01.K小姐的命名法
问题描述
K 小姐是一位软件开发者,她在编写代码时习惯使用不同的命名风格。然而,随着项目的复杂性增加,她发现维护不同命名风格的函数名变得越来越困难。为了统一代码风格,K 小姐决定将所有函数名转换为下划线命名法(snake_case)。她的代码中可能包含以下几种命名风格:
- 小驼峰命名法(camelCase): 除第一个单词外,每个单词的首字母大写,例如:
myVariable
。 - 下划线命名法(snake_case): 所有字母小写,单词之间用下划线连接,例如:
my_variable
。
如果一个函数名已经是下划线命名法,则无需修改。如果是小驼峰命名法,则需要转换为下划线命名法。如果既不符合小驼峰命名法,也不符合下划线命名法,则输出 "indistinct"。
输入格式
第一行输入一个整数 ,表示有 个函数名。
接下来的 行中,每行一个字符串,表示一个函数名。字符串只包含大小写字母,长度不超过 。
输出格式
输出 行,每行表示转换后的函数名。
样例输入
样例 1
3
newFunc
my_variable
myFirstName
样例 2
6
MyLastName
sampleFunc
inputSampleTestTwo
indistinct_Sample
another__sample
another_sample_
样例输出
样例 1
new_func
my_variable
my_first_name
样例 2
indistinct
sample_func
input_sample_test_two
indistinct
indistinct
indistinct
数据范围
题解
题目要求将函数名从小驼峰命名法转换为下划线命名法,并对不符合任何命名规则的函数名输出 "indistinct"。首先,判断一个字符串是否为小驼峰命名法或下划线命名法。然后,根据判断结果进行相应的转换或输出。
参考代码
- Python
def camel_to_snake(name):
"""将小驼峰命名法的字符串转换为下划线命名法"""
result = []
for char in name:
if char.isupper():
result.append('_')
result.append(char.lower())
else:
result.append(char)
return ''.join(result).lstrip('_')
def is_camel_case(name):
"""判断字符串是否为小驼峰命名法"""
return name != name.lower() and '_' not in name and name[0].islower()
def is_snake_case(name):
"""判断字符串是否为下划线命名法"""
return name == name.lower() and '__' not in name and (name[-1] != '_') and (name[0] != '_')
def convert_names(names):
"""转换函数名列表"""
results = []
for name in names:
if is_camel_case(name):
results.append(camel_to_snake(name))
elif is_snake_case(name):
results.append(name)
else:
results.append("indistinct")
return results
# 读取输入
n = int(input().strip())
names = [input().strip() for _ in range(n)]
results = convert_names(names)
# 输出结果
for result in results:
print(result)
- Java
import java.util.Scanner;
public class FunctionNameConverter {
// 判断是否为小驼峰命名法
private static boolean isCamelCase(String name) {
return !name.equals(name.toLowerCase()) && !name.contains("_") && Character.isLowerCase(name.charAt(0));
}
// 判断是否为下划线命名法
private static boolean isSnakeCase(String name) {
return name.equals(name.toLowerCase()) && !name.contains("__") && !name.endsWith("_") && !name.startsWith("_");
}
// 将小驼峰命名法转换为下划线命名法
private static String camelToSnake(String name) {
StringBuilder result = new StringBuilder();
for (char c : name.toCharArray()) {
if (Character.isUpperCase(c)) {
result.append('_').append(Character.toLowerCase(c));
} else {
result.append(c);
}
}
return result.toString();
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
scanner.nextLine(); // 读取换行符
for (int i = 0; i < n; i++) {
String name = scanner.nextLine().trim();
if (isCamelCase(name)) {
System.out.println(camelToSnake(name));
} else if (isSnakeCase(name)) {
System.out.println(name);
} else {
System.out.println("indistinct");
}
}
}
}
- Cpp
#include <iostream>
#include <vector>
#inc
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
这里收集了超全的刷题笔记,欢迎大家的订阅,会持续跟新的