顺丰笔试 顺丰笔试题 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%内容,订阅专栏后可继续查看/也可单篇购买

2024 BAT笔试合集 文章被收录于专栏

持续收录字节、腾讯、阿里、美团、美团、拼多多、华为等笔试题解,包含python、C++、Java多种语言版本,持续更新中。

全部评论

相关推荐

5 7 评论
分享
牛客网
牛客企业服务