此篇文章记录于2018年笔者当时校招之路
时过一年,又是一轮毕业季,故放出此私密文章,为广大应届生分享笔者当时校招之路,虽因种种原因,与华为失之交臂。
题目自己定的,具体叫啥笔者也不是很清楚,题意大体如下
输入一串字符串,以英文逗号分隔,如 A1,B2,C3,a9,d0,然后按照每个字符串最后一个数字的ASCII码作为优先级,按照优先级
从高到底输出出栈的字符串,同样以英文逗号作为分隔,优先级相同的话,入栈顺序就是出栈顺序。输出
a9,c3,B2,A1,d0
这道题主要考了字符串分割,以及对栈的理解,代码也不是很难,先分享笔者当时的代码,case全过,不过不记得是不是这个
版本了,大体意思差不多。
#include<string>
#include<stack>
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
vector<string> split(const string s, char seperator) {
vector<string> result;
typedef string::size_type string_size;
string_size i = 0;
string_size j = 0;
for (i = 0; i < s.size(); i++)
{
if (s[i] == seperator)
{
result.push_back(s.substr(j, i - j));
j = i + 1;
}
}
if (s[s.size() - 1] != seperator) result.push_back(s.substr(s.rfind(seperator) + 1));
else if (s[s.size() - 1] == seperator)result.push_back("");
return result;
}
bool compare(string a, string b)
{
return a[a.size() - 1] > b[b.size() - 1];
}
int main()
{
string input;
while (getline(cin, input))
{
vector<string> vec;
vec = split(input,',');//先将字符串按照,分割
stable_sort(vec.begin(), vec.end(), compare);//再按照最后一个字符的ASCII码大小排序
for (int i = vec.size() - 1; i > 0; i--)
cout << vec[i] << ',';
cout << vec[0] << endl;
}
return 0;
}