【秋招笔试】8.29顺丰秋招(开发岗)-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试

💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导

✨ 本系列打算持续跟新 春秋招笔试题

👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸

✨ 笔试合集传送们 -> 🧷春秋招笔试合集

🍒 本专栏已收集 80+ 套笔试题,笔试真题 会在第一时间跟新

🍄 题面描述等均已改编,如果和你笔试题看到的题面描述不一样请理解,做法和题目本质基本不变。

🧩 备战秋招还没订阅的朋友们可以冲一下啦,当试题收集至 100 套后,价格会进行一波调整~

🍹 感谢各位朋友们的订阅,你们的支持是我们创作的最大动力 💞

alt

🪔 顺丰秋招笔试来啦!!!

🍥 本套难度不大,不过算法岗的选择很难!!

1️⃣ 按照题意模拟即可

2️⃣ 非常经典的状态压缩DP,适当剪枝的话DFS应该也可以过

🚙 01.K小姐的命名法

问题描述

K 小姐是一位软件开发者,她在编写代码时习惯使用不同的命名风格。然而,随着项目的复杂性增加,她发现维护不同命名风格的函数名变得越来越困难。为了统一代码风格,K 小姐决定将所有函数名转换为下划线命名法(snake_case)。她的代码中可能包含以下几种命名风格:

  1. 小驼峰命名法(camelCase): 除第一个单词外,每个单词的首字母大写,例如:myVariable
  2. 下划线命名法(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%内容,订阅专栏后可继续查看/也可单篇购买

学长刷题笔记 文章被收录于专栏

这里收集了超全的刷题笔记,欢迎大家的订阅,会持续跟新的

全部评论

相关推荐

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