当前位置:   article > 正文

【2019秋招刷题】华为0911笔试题_华为9.11笔试

华为9.11笔试
  • 自动驾驶,发送消息模拟
  • 代码如下:
#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
string charToStr(char chr)
{
	char chr_str[2] = {chr,'\0'};
	string str = chr_str;
	return str;
}

int strToInt(string str)
{
	char cstr[10];
	strcpy(cstr, str.c_str());
	int iii = atoi(cstr); 
	return iii;
}
//这里start是{所在位置,end是}所在位置
vector<int> strToIntArr(string str, int start, int end)
{
	vector<int> vec;
	string str_int;
	for(int counter = start+1; counter < end;counter++)
	{
		if(str[counter] == ',')
		{
			int tmp = strToInt(str_int);
			vec.push_back(tmp);
			str_int = "";
		}
		else if(counter == end -1)
		{
			str_int += charToStr(str[counter]);
			int tmp = strToInt(str_int);
			vec.push_back(tmp);
			str_int = "";

		}
		else
		{
			str_int += charToStr(str[counter]);
		}
	}
	return vec;
}
int main()
{
	string str_in;
	vector<int> vec_a;
	vector<int> vec_b;
	int r;
	int start, end;
	char arr_label;
	
	cin>>str_in;
	for(int counter = 0; counter < str_in.length();counter++)
	{	
		if(str_in[counter] == 'R')
		{
			r = strToInt(str_in.substr(counter + 2));
			break;
		}
		else if(str_in[counter] == '=')
		{
			arr_label = str_in[counter - 1];
		}
		else if(str_in[counter] == '{')
			start = counter;
		else if(str_in[counter] == '}')
		{
			end = counter;
			if(arr_label == 'A')
			{
				vec_a = strToIntArr(str_in,start,end); 
			}
			else
			{
				vec_b = strToIntArr(str_in,start,end);
			}
		}
	}

	vector<int> res_first;
	vector<int> res_second;
	int begin_pos_b = 0;
	int numOfpairs = 0;
	for(int counter1 = 0; counter1 < vec_a.size();counter1++)
	{
		numOfpairs = 0;
		for(int counter2 = begin_pos_b; counter2 < vec_b.size();counter2++)
		{
			if(vec_b[counter2] < vec_a[counter1])
			{
				begin_pos_b = counter2;
				continue;
			}

			if(vec_b[counter2] - vec_a[counter1] <= r)
			{
				res_first.push_back(vec_a[counter1]);
				res_second.push_back(vec_b[counter2]);
				numOfpairs++;
				continue;
			}
			if(numOfpairs == 0)
			{
				res_first.push_back(vec_a[counter1]);
				res_second.push_back(vec_b[counter2]);
			}
			break;
		}
	}

	for(int counter = 0; counter < res_second.size();counter++)
	{
		cout<<"("<<res_first[counter]<<","<<res_second[counter]<<")";
	}
	cout<<endl;
	return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 字符串反转,代码如下;
#include <iostream>
#include <string>
#include <stack>
using namespace std;
bool isValid(char chr)
{
	if(chr >= 'a' && chr <= 'z')
		return true;
	if(chr >= 'A' && chr <= 'Z')
		return true;
	if(chr >= '0' && chr <= '9')
		return true;
	return false;
}
string charToStr(char chr)
{
	char chr_str[2] = {chr,'\0'};
	string str = chr_str;
	return str;
}

int main()
{
	string str_in;
	getline(cin,str_in);

	string str_commu = "";
	stack<string> stk_str;
	for(int counter = 0; counter < str_in.length(); counter++)
	{
		if(isValid(str_in[counter]))
		{
			str_commu += charToStr(str_in[counter]);
			if(counter == str_in.length() -1)
			{
				stk_str.push(str_commu);
			}
		}
		else
		{
			if(str_in[counter] == '-')//如果是连续两个--的情况要一次性处理完毕
			{
				if(counter == str_in.length() -1)
				{
					if(str_commu != "")
					{
						stk_str.push(str_commu);
					}
					break;
				}
				else if(counter > 0 && isValid(str_in[counter - 1])&&isValid(str_in[counter + 1]))
				{
					str_commu += charToStr(str_in[counter]);
				}
				else if(str_in[counter + 1] == '-')
				{
					if(str_commu != "")
						stk_str.push(str_commu);
					str_commu = "";
					counter ++;
					continue;
				}
			}
			else if(str_commu != "")
			{
				stk_str.push(str_commu);
				str_commu = "";
			}
		}
	}
	while(stk_str.size() != 0)
	{
		cout<<stk_str.top();
		stk_str.pop();
		if(stk_str.size() != 0)
		{
			cout<<" ";
		}
	}
	cout<<endl;
	return 0;	
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 航班改签,下回更新。。。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/919080
推荐阅读
相关标签
  

闽ICP备14008679号