美的笔试 美的笔试题 0316
笔试时间:2025年03月16日
历史笔试传送门:
第一题
题目
简单数字游戏,输入给定一个字符串,每个字母代表不同的分数,只包含'P'、'G'、'M',要求求出此做该游戏的分数。 'P'表示Prefect,可以得10分,当连续得到3个'P'后,紧挨着的'P'得分为15分;'G'表示Great,你可以得分5分;'M'表示 Miss,'M'不得分,当字符串中出现3个'M'时,游戏结束。
输入描述
输入为一个字符串,为string类型。
输出描述
输出为做该游戏可得的分数,为int类型。
样例输入
'PPPPPP'
样例输出
75
参考题解
模拟题,直接根据题意进行判断即可。(分别设置两个常量用来统计当前 P 和 M 出现次数)
C++:[此代码未进行大量数据的测试,仅供参考]
#include <iostream> #include <string> using namespace std; int main() { string s; cin >> s; int n = s.length(); int sum = 0; int numP = 0; // 连续的 P 计数 int numM = 0; // 累计 M 次数 for (int i = 0; i < n; i++) { char c = s[i]; if (c == 'P') { numP++; if (numP > 3) { sum += 15; } else { sum += 10; } } else if (c == 'G') { sum += 5; numP = 0; // 遇到 G 就重置连续 P 计数 } else { numM++; numP = 0; if (numM == 3) break; // 连续出现 3 个 M 则中断 } } cout << sum << endl; return 0; }
Java:[此代码未进行大量数据的测试,仅供参考]
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String s = in.next(); int n = s.length(); int sum = 0; int numP = 0; int numM = 0; for(int i = 0; i < n; i++){ char c = s.charAt(i); if(c == 'P'){ numP++; if(numP > 3){ sum += 15; }else{ sum += 10; } }else if(c == 'G'){ sum += 5; numP = 0; }else { numM++; numP = 0; if(numM == 3) break; } } System.out.println(sum); } }
Python:[此代码未进行大量数据的测试,仅供参考]
s = input().strip() n = len(s) sum_score = 0 numP = 0 # 连续出现 P 的次数 numM = 0 # 累计 M 的次数 for c in s: if c == 'P': numP += 1 if numP > 3: sum_score += 15 else: sum_score += 10 elif c == 'G': sum_score += 5 numP = 0 else: numM += 1 numP = 0 if numM == 3:
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
2025 春招笔试合集 文章被收录于专栏
2025打怪升级记录,大厂笔试合集 C++, Java, Python等多种语言做法集合指南