简记华为FX笔试题(一)之字符串加密

此篇文章记录于2018年笔者当时校招之路

时过一年,又是一轮毕业季,故放出此私密文章,为广大应届生分享笔者当时校招之路

可能上批FX笔试题太难了,这次笔试题大大降低了难度。

题目大体意思是这样,输入一个字符串,然后将每个字符加密拼接,

拼接算法是将每个字符转换为二进制数字,然后将这些二进制数字分别逆序后,再拼接。

比如 输入 ab

输出 10000110100011

这道题是比较简单的,主要意思是将字符转换成二进制,然后再将二进制字符反过来拼接就好,不过需要注意的是

0如果在前面,是需要删除了,笔者刚开始没注意这个,所以case没过,好在后来发现了,现将代码分享出来,祝大家早日拿到心怡的offer!

#include<iostream>
#include<vector>
#include<string>
using namespace std;
#include<algorithm>
string outc(char c)//这个函数的作用是将字符转换成二进制,由于char是一个字节,即位,所以我们只要要将10000000循环与运算就好
{
	string result;
	unsigned char k = 0x80;
	for (int i = 0; i < 8; i++, k >>= 1)
	{
		if (c & k)
		{
			result = result + "1";
		}
		else
		{
			result = result + "0";
		}
	}
//到了这边已经将字符装换成二进制了,但是还需要把前面的0删除,
//下面这段循环就是发现第一个不是0的位置,然后取后面的字符串

	for (int i = 0; i < result.size(); i++)
	{
		if (result[i] != 0)
		{
			result = result.substr(i);
			break;
		}
	}
	reverse(result.begin(), result.end());//注意,需要翻转,这里直接调用函数就行
	return result;
}
int main()
{
	string input;
	while (getline(cin,input))
	{
		for (int i = 0; i < input.size(); i++)
		{
			cout << outc(input[i])<<" ";
		}
	}
	cout << endl;
    return 0;
}

 

 

 

上一篇:The Suspects——求联通块数量的模板题


下一篇:使用MQTT.fx接入阿里云物联网平台方法