腾讯测开一面面经(8.17)
1. 自我介绍
2. 问项目,项目细节,项目中最能体现你能力的地方。
3. 为什么要报测开?了解测开吗?
4. 手撕代码 解压字符串。 (时间比较紧, 总共15min,没写出来,说了一下思路,也说得不好)
完事后计时做了下,写完需要30分钟,太慢了。
之后做题时候解题思路要能清晰表述,要加强做题速度。与君共勉~。
- 输入 HG[3|B[2|CA]]F
- 输出 HGBCACABCACABCACAF
#include<bits/stdc++.h>
using namespace std;
string multiStr(string& pre, int n)
{
string ans = "";
while(n--)
{
ans += pre;
}
return ans;
}
int main() {
string s;
cin>>s;
stack<pair<int, string>> buffer;
int n = s.size();
string ans = "", next = "";
for (int i = 0; i < n;)
{
if(s[i] == '[')
{
i++;
next = "";
string now = "";
int num = 0;
while(isdigit(s[i])) num = num*10 + s[i++]-'0';
++i; //跳过 |
while(s[i] != ']' && s[i] != '[')
{
now += s[i];
++i;
}
buffer.push(make_pair(num, now));
}
else if(s[i] == ']')
{
i++;
int cnt = buffer.top().first; string pre = buffer.top().second + next; buffer.pop();
next = multiStr(pre, cnt);
if (buffer.empty()) ans += next;
}
else
{
ans += s[i++];
}
}
cout<<ans;
return 0;
}
