25届-8.29顺f秋招(开发岗)-改编题

💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历

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

✨ 合集传送们 -> 🧷学长刷题笔记

🍒 本专栏已收集 140+ 套题 🍄 题面描述等均已改编,如果和你实际看到的题面描述不一样请理解,做法和题目本质基本不变。

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

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>
#include <string>
#include <cctype>

using namespace std;

// 检查是否为小驼峰命名法

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

本专栏短期内不再更新,请勿继续订阅

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-01 11:27
点赞 评论 收藏
分享
找个工作&nbsp;学历是要卡的&nbsp;要求是高的&nbsp;技能不足是真的&nbsp;实习经验是0的&nbsp;简历无处可写是事实的&nbsp;钱不好赚是真的&nbsp;想躺平又不敢躺&nbsp;也不甘心躺&nbsp;怕自己的灵感和才华被掩埋甚至从未被自己发现&nbsp;又质疑自己是否真正有才华
码农索隆:你现在啊,你心里都明白咋回事,但是你没办法改变现状,一想到未来,你又没有信心狠下心来在当下努力。 得走出这种状态,不能一直困在那里面,哪不行就去提升哪,你一动不动那指定改变不了未来,动起来,积少成多才能越来越好
点赞 评论 收藏
分享
lllllkin:感觉可以精简到一页简历,有些排版感觉不是必须的。 时间线越早的,你自己越熟悉的放前面。描述可以更精简些,一些问题解决感觉可以不用写具体技术栈,卖个关子,等面试官问。
点赞 评论 收藏
分享
评论
1
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务