1. 题目背景与考察要点解析
最近在整理某校研究生复试机试题库时,遇到一组编号为t76-t80的C++编程题。这类题目通常考察考生对基础算法和数据结构的掌握程度,以及实际编码能力。作为参加过多次机试监考的过来人,我发现这类题目往往具有以下特征:
- 题目描述简洁,但边界条件隐蔽
- 时间复杂度和空间复杂度都有明确要求
- 需要处理各种特殊输入情况
- 代码风格和异常处理也会影响评分
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 题目详解与解题思路
2.1 t76题:字符串压缩算法
题目要求实现类似"aaabbbcc"→"a3b3c2"的字符串压缩功能。这个题目看似简单,但实际编码时需要注意:
- 连续相同字符的计数方式
- 单个字符不需要添加数字(如"abc"应保持原样)
- 字符串末尾的特殊处理
cpp复制string compressString(string str) {
if(str.empty()) return str;
string res;
char prev = str[0];
int count = 1;
for(int i=1; i<str.size(); ++i){
if(str[i] == prev){
count++;
}else{
res += prev;
if(count > 1) res += to_string(count);
prev = str[i];
count = 1;
}
}
res += prev;
if(count > 1) res += to_string(count);
return res.size() < str.size() ? res : str;
}
注意:在实际机试中,要特别注意处理空字符串和全不相同字符的情况,这是常见的失分点。
2.2 t77题:二叉树镜像转换
这道题要求将给定的二叉树转换成它的镜像。解题时需要理解递归的本质:
cpp复制struct TreeNode {
int val;
TreeNo
