-
本次面试本来是上周就要面的,但是因为各种原因推到了今天。
-
首先他先出了两道题,我表现很不好,刺激了自己刷题的欲望,觉得刷题才是王道!!!当可以灵活运用一门语言进行刷题时,在提交运行时显绿色的时候才是最爽的时候,当然,有时候面试官不仅仅会看你做出来了没有,一个人的编程素养也很重要,优美的代码,就算没做出来,至少面试官知道你是有实力的。
-
当我编程表现不好的时候,我主动放弃了,之后对方开始问项目。
-
下面是两道题的描述,都很简单,很基础。
-
字符串“hello world”写一个简单的加密算法,要求密文为可见字符。
我的思路是凯撒加密,偏C语言写的。不过写的不完美。做完第一道题,感觉脑袋有点大,第二道题没做,主动放弃了,其实非常简单,自己的编程熟练度还不够,一定要多刷题,从今天起,不管学习到多久,刷题将成为每一天的一部分。
#include <iostream>
#include <string.h>
using namespace std;
void encry(char *buf, int len)
{
for(int i=0; i < len; i++)
{
if(' ' == buf[i])
{
continue;
}
buf[i] = (buf[i] + 1 - 'a')%26 + 'a';
}
}
int main()
{
char * str = "hello world";
char * buf = (char *)malloc(12);
buf [11] = '\0';
memcpy(buf, str, 11);
encry(buf, 11);
cout << buf;
free(buf);
return 0;
}
- 小Q最近学习了密码学,为了应用他所学习到的知识,他发明了一种信息的加密方法。这种加密方法描述如下。
假设没有加密的报文是,这个报文的长度为n,加密的方式如下:
首先写下a1作为加密报文;
然后将a2写到已经得到的加密报文的右边;
然后将a3写到已经得到的加密报文的左边;
然后将a4写到已经得到的加密报文的右边;
然后将a5写到已经得到的加密报文的左边;
…
这样循环一直到用完a的全部字符,假设有a=nowcoder,那么加密过程如下:
“n” -> “no” -> “wno” -> “wnoc” -> “ownoc” -> “ownocd” -> “eownocd” -> “eownocdr”。
现在你有一个已经加密好的报文b,请问原来的没有加密的报文是什么,请你还原。
输入描述一个字符串b,表示已经加密的报文,长度在1到50之间,只包含小写字母。
输出描述一个字符串,表示没有加密的报文。
示例1
输入
ohmrf
输出
mrhfo
示例2
输入
vsqcykhudx
输出
ykchqusdvx
自己实现的:
#include <iostream>
#include <string.h>
using namespace std;
void decode(char * str)
{
int len = strlen(str);
if(1 == len || 2 == len)
{
return;
}
char *res = (char *)malloc(len + 1);
res[len] = '\0';
int i = 0;
if(0 != len % 2) //起始位置,奇数取中间
{
i = len / 2;
}
else
{
i = len / 2 - 1;
}
int index = 0; //res 一一赋值
res[index++] = str[i];
for(int j = 1; j <= len / 2; j++)
{
if(i + j < len)
{
res[index++] = str[i + j];
}
if(i - j >= 0)
{
res[index++] = str[i - j];
}
}
strcpy(str, res);
}
int main()
{
char * str = (char *)malloc(50);
memset(str, 0, sizeof(str));
cin >> str;
decode(str);
cout << str;
free(str);
return 0;
}
要将自己会的表现的清清楚楚,淋漓尽致,揣摩对方想法。