华为笔试题(2019.4.3)
【编程题】
1.(100分)多个数组合并为一个数组(输入输出均以逗号隔开)
(通过100%)
#include <iostream> #include <vector> #include <stdio.h> #include <string> using namespace std; int test100() { int len; cin >> len; vector<string> allstr; string strtemp; int i, j, temp; while (cin >> strtemp) { allstr.push_back(strtemp); } long long sumlen=0; for (i = 0; i < allstr.size(); i++) { sumlen += allstr[i].length(); } string result; int num = 0; int l = 0; while (sumlen) { for (i = 0; i < allstr.size(); i++) { if (allstr[i].length() != 0) { l = 0; num = 0; for (j = 0; j < allstr[i].length();j++) { l++; if (allstr[i][j] == ',') num++; if (num == len) break; } if (num==len) { result += allstr[i].substr(0, l); allstr[i] = allstr[i].erase(0, l); } else { result += allstr[i]; result += ','; allstr[i].erase(0); } } } sumlen = 0; for (i = 0; i < allstr.size(); i++) { sumlen += allstr[i].length(); } } result.erase(result.length()-1); cout << result << endl; return 0; }
2.(200)字符串数组的处理,合法非法
(时间不够没敲完)
#include <iostream>
#include <vector>
#include <set>
#include <stdio.h>
#include <string>
#include <algorithm>
using namespace std;
int mycmp(string a,string b)
{
int la, lb;
la = a.length();
lb = b.length();
int i, j;
if (la==lb)
{
for (i = 0; i < la;i++)
{
if (a[i]!=b[i])
{
return a[i] < b[i];
}
}
}
if (la < lb)
{
for (i = 0; i < la; i++)
{
if (a[i] != b[i])
{
return a[i] < b[i];
}
}
return 1;
}
if (la > lb)
{
for (i = 0; i < lb; i++)
{
if (a[i] != b[i])
{
return a[i] < b[i];
}
}
return 1;
}
}
int test200()
{
vector<string> allstr;
vector<string> falsestr,truestr2;
set<string> truestr;
string strtemp;
while (cin >> strtemp)
{
allstr.push_back(strtemp);
}
int i, j,count;
for (i = 0; i < allstr.size();i++)
{
count = 0;
for (j = 0; j < allstr[i].length();j++)
{
if ((allstr[i][j] >= '0'&&allstr[i][j] <= '9') || (allstr[i][j] >= 'a'&&allstr[i][j] <= 'z') || (allstr[i][j] >= 'A'&&allstr[i][j] <= 'Z'))
{
count++;
}
}
if (count == allstr[i].length())//合法
{
truestr.insert(allstr[i]);
}
else//非法
{
falsestr.push_back(allstr[i]);
}
}
//set转vector
for (auto p = truestr.begin(); p != truestr.end(); p++)
{
truestr2.push_back(*p);
}
//输出
for (i = 0; i < truestr2.size(); i++)
{
cout << truestr2[i] << ' ';
}
cout << endl;
//输出
for (i = 0; i < falsestr.size();i++)
{
cout << falsestr[i] << ' ';
}
cout << endl;
//移位
int n = 10;
string temp;
for (i = 0; i < truestr2.size(); i++)
{
for (j = 0; j < n;j++)
{
temp = truestr2[i][0];
truestr2[i].erase(0, 1);
truestr2[i] += temp;
}
}
//输出
for (i = 0; i < truestr2.size(); i++)
{
cout << truestr2[i] << ' ';
}
cout << endl;
//排序
sort(truestr2.begin(), truestr2.end(),mycmp);
//输出
for (i = 0; i < truestr2.size(); i++)
{
cout << truestr2[i] << ' ';
}
return 0;
}
#include <vector>
#include <set>
#include <stdio.h>
#include <string>
#include <algorithm>
using namespace std;
int mycmp(string a,string b)
{
int la, lb;
la = a.length();
lb = b.length();
int i, j;
if (la==lb)
{
for (i = 0; i < la;i++)
{
if (a[i]!=b[i])
{
return a[i] < b[i];
}
}
}
if (la < lb)
{
for (i = 0; i < la; i++)
{
if (a[i] != b[i])
{
return a[i] < b[i];
}
}
return 1;
}
if (la > lb)
{
for (i = 0; i < lb; i++)
{
if (a[i] != b[i])
{
return a[i] < b[i];
}
}
return 1;
}
}
int test200()
{
vector<string> allstr;
vector<string> falsestr,truestr2;
set<string> truestr;
string strtemp;
while (cin >> strtemp)
{
allstr.push_back(strtemp);
}
int i, j,count;
for (i = 0; i < allstr.size();i++)
{
count = 0;
for (j = 0; j < allstr[i].length();j++)
{
if ((allstr[i][j] >= '0'&&allstr[i][j] <= '9') || (allstr[i][j] >= 'a'&&allstr[i][j] <= 'z') || (allstr[i][j] >= 'A'&&allstr[i][j] <= 'Z'))
{
count++;
}
}
if (count == allstr[i].length())//合法
{
truestr.insert(allstr[i]);
}
else//非法
{
falsestr.push_back(allstr[i]);
}
}
//set转vector
for (auto p = truestr.begin(); p != truestr.end(); p++)
{
truestr2.push_back(*p);
}
//输出
for (i = 0; i < truestr2.size(); i++)
{
cout << truestr2[i] << ' ';
}
cout << endl;
//输出
for (i = 0; i < falsestr.size();i++)
{
cout << falsestr[i] << ' ';
}
cout << endl;
//移位
int n = 10;
string temp;
for (i = 0; i < truestr2.size(); i++)
{
for (j = 0; j < n;j++)
{
temp = truestr2[i][0];
truestr2[i].erase(0, 1);
truestr2[i] += temp;
}
}
//输出
for (i = 0; i < truestr2.size(); i++)
{
cout << truestr2[i] << ' ';
}
cout << endl;
//排序
sort(truestr2.begin(), truestr2.end(),mycmp);
//输出
for (i = 0; i < truestr2.size(); i++)
{
cout << truestr2[i] << ' ';
}
return 0;
}
3.(300)null
#华为##笔试题目##题解##春招##笔经#