美的筆試 美的筆試題 0316
筆試時間:2025年03月16日
歷史筆試傳送門:
第一題
題目
簡單數(shù)字游戲,輸入給定一個字符串,每個字母代表不同的分數(shù),只包含'P'、'G'、'M',要求求出此做該游戲的分數(shù)。 'P'表示Prefect,可以得10分,當連續(xù)得到3個'P'后,緊挨著的'P'得分為15分;'G'表示Great,你可以得分5分;'M'表示 Miss,'M'不得分,當字符串中出現(xiàn)3個'M'時,游戲結(jié)束。
輸入描述
輸入為一個字符串,為string類型。
輸出描述
輸出為做該游戲可得的分數(shù),為int類型。
樣例輸入
'PPPPPP'
樣例輸出
75
參考題解
模擬題,直接根據(jù)題意進行判斷即可。(分別設(shè)置兩個常量用來統(tǒng)計當前 P 和 M 出現(xiàn)次數(shù))
C++:[此代碼未進行大量數(shù)據(jù)的測試,僅供參考]
#include <iostream> #include <string> using namespace std; int main() { string s; cin >> s; int n = s.length(); int sum = 0; int numP = 0; // 連續(xù)的 P 計數(shù) int numM = 0; // 累計 M 次數(shù) 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 就重置連續(xù) P 計數(shù) } else { numM++; numP = 0; if (numM == 3) break; // 連續(xù)出現(xiàn) 3 個 M 則中斷 } } cout << sum << endl; return 0; }
Java:[此代碼未進行大量數(shù)據(jù)的測試,僅供參考]
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:[此代碼未進行大量數(shù)據(jù)的測試,僅供參考]
s = input().strip() n = len(s) sum_score = 0 numP = 0 # 連續(xù)出現(xiàn) P 的次數(shù) numM = 0 # 累計 M 的次數(shù) 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%內(nèi)容,訂閱專欄后可繼續(xù)查看/也可單篇購買
2025 春招筆試合集 文章被收錄于專欄
2025打怪升級記錄,大廠筆試合集 C++, Java, Python等多種語言做法集合指南