携程笔试 携程笔试题 1010

笔试时间:2024年10月10日 秋招

历史笔试传送门:2023秋招笔试合集

第一题

题目:游游的驼峰命名

游游以前命名代码,习惯是这样的:union_find, in_out, update_user, update_admin即变量中只使用小写字母以及下划线,两个单词用下划线相连。但是小牛老师教会了他大驼峰法,即每个单词以大写字母开头,并且没有下划线相连,比如将上述的四个变量改成大驼峰法便是:UnionFind, InOut, UpdateUser, UpdateAdmin所以游游现在的首要任务就是将他以前的代码中的变量命名全都改成大驼峰法,请你帮帮他吧。

输入描述

第一行一个正整数T,表示一共有 T 组数据。

接下来T行,每行一个字符串 s表示游游原始的变量名。

输出描述

输出包含 T 行,每行一个字符串 s 表示转化成大驼峰法命名的变量名。

样例输入

2

now_coder

acm_icpc

样例输出

NowCoder

AcmIcpc

参考题解

把第一位和下划线后一位改成大写即可。

C++:[此代码未进行大量数据的测试,仅供参考]

#include <iostream>

#include <cstring>

using namespace std;

char str[105];

int main() {

 int T;
 
 cin>>T;
 
 while (T--)
 
 {
 
  cin>>str;
  
  int n=strlen(str);
  
  printf("%c",str[0]+'A'-'a');
  
  for (int i=1; i<n; i++)
  
  {
  
   if (str[i]=='_')
    printf("%c",str[++i]+'A'-'a');
   else
    printf("%c",str[i]);
  
  }
  
  cout<<endl;
 
 }

}

Java:[此代码未进行大量数据的测试,仅供参考]

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        int T = scanner.nextInt();  // 读取测试用例数量
        scanner.nextLine();  // 读取换行符
        
        while (T-- > 0) {
            String str = scanner.nextLine();
            int n = str.length();
            
            // 输出第一个字符,转换为大写
            System.out.print(Character.toUpperCase(str.charAt(0)));
            
            for (int i = 1; i < n; i++) {
                if (str.charAt(i) == '_') {
                    // 将下划线后的字符转为大写
                    System.out.print(Character.toUpperCase(str.charAt(++i)));
                } else {
                    System.out.print(str.charAt(i));
                }
            }
            
            System.out.println();  // 输出换行
        }

        scanner.close();
    }
}

Python:[此代码未进行大量数据的测试,仅供参考]

T = int(input())  # 读取测试用例数量

for _ in range(T):
    str_input = input()
    n = len(str_input)
    
    # 输出第一个字符,转换为大写
    print(str_input[0].upper(), end='')
    
    i = 1
    while i < n:
        if str_input[i] == '_':
            # 将下划线后的字符转为大写
            i += 1
            print(str_input[i].upper(), end='')
        else:
            print(str_input[i], end='')
        i += 1
    
    print()  # 输出换行

第二题

题目:游游吃糖果

游游现在有n颗糖果。他有一个吃糖果的计划。具体是:如果剩余的糖果数量是素数,那么这天他会吃[n/3]+1颗。否则这天就吃[n/2]+1颗。问他的糖果可以吃几天。[x]表示对向下取整。

输入描述

输入一个整数n,表示游游的糖果数量。

输出描述

输出一个整数,表示游游可以吃的天数。

样例输入

10

样例输出

3

参考题解

模拟,根号复杂度判断素数。

C++:[此代码未进行大量数据的测试,仅供参考]

#include <iostream>

#include <cmath>

using namespace std;

long long n;

int ans=0;

bool isPrime(long long x)

{

 for (int i=2; i<=sqrt(x); i++)
 
  if (x%i==0) return 0;
 
 return 1;

}

int main() {
 
 cin>>n;
 
 while (n>0)
 
 {
 
  ans++;
  
  if (isPrime(n)) n-=n/3+1;
  
  else n-=n/2+1;
 
 }
 
 cout<<ans<<endl;

}

Java:[此代码未进行大量数据的测试,仅供参考]

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        long n = scanner.nextLong();  // 读取 n
        int ans = 0;

        // 判断质数的函数
        boolean isPrime(long x) {
            if (x < 2) return false;
            for (int i = 2; i <= Math.sqrt(x); i++) {
                if (x % i == 0) return false;
            }
            return true;
        }

        // 循环直到 n 为 0
        while (n > 0) {
            ans++;
            if (isPrime(n)) {
                n -= n / 3 + 1;
            } else {
                n -= n / 2 + 1;
            }
        }

        System.out.println(ans);  // 输出结果
        scanner.close();
    }
}

Python:[此代码未进行大量数据的测试,仅供参考]

import math

# 判断质数的函数
def is_prime(x):
    if x < 2:
        return False
    for i in range(2, int(math.

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

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

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

全部评论

相关推荐

头像
10-12 23:40
门头沟学院 Java
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务