25届-8.29顺f秋招(开发岗)-改编题
💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历
👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸
✨ 合集传送们 -> 🧷学长刷题笔记
🍒 本专栏已收集
140+
套题 🍄 题面描述等均已改编,如果和你实际看到的题面描述不一样请理解,做法和题目本质基本不变。🍹 感谢各位朋友们的订阅,你们的支持是我们创作的最大动力 💞
🍥 本套难度不大,不过算法岗的选择很难!!
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>
#include <string>
#include <cctype>
using namespace std;
// 检查是否为小驼峰命名法
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
利益相关,专栏短期内将不再更新 文章被收录于专栏
本专栏短期内不再更新,请勿继续订阅