去哪儿网2014笔试算法题汇总

本文提供了一系列编程挑战题目,涵盖路径转换、矩阵处理、文件操作、字符串排序等实用技术问题,旨在帮助读者提升编程技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1.写一个函数,转换相对路径为绝对路径,比如:/home/abs/../temp/new/../,输出路径为:/home/temp。

参考代码:

//写一个函数,转换相对路径为绝对路径,比如:/home/abs/../temp/new/../,输出路径为:/home/temp。
int RP2AP(const char* pInStr, char* pOutStr)
{
	if (pInStr==NULL || pOutStr==NULL) return 0;

	string str = pInStr;
	string strTemp;
	vector<string> vec_str;
	string strOut="";

	int nPos1;
	int nPos2;

	nPos1 = str.find("/", 0);
	if (nPos1<0)
	{
		return -1;
	}

	while(1)
	{
		nPos2 = str.find("/", nPos1+1);
		if (nPos2>nPos1)
		{
			strTemp = str.substr(nPos1, nPos2-nPos1);
			//如果不是/..,就放入vector里
			if (strTemp!="/..")
				vec_str.push_back(strTemp);
			else//弹出上一个
			{
				vec_str.reserve(vec_str.size());
				vec_str.pop_back();
				vec_str.reserve(vec_str.size());
			}
			nPos1 = nPos2;
		}
		else
		{
			break;
		}
	}

	//循环赋值累加
	for (int i=0; i<vec_str.size(); i++)
	{
		strOut +=vec_str[i];
	}
	
	//这里用strOut.c_str(),要安全一些,有的环境不这样写编译都不过。
	memcpy(pOutStr, strOut.c_str(), strOut.size());

	return 1;
}

int main()    
{    
    int n = 10;       
	//char a[] = "/home/abs/../temp/new/../";
	char a[] = "/home/abs/temp/new/../"; 

	char b[256];
	
	memset(b, 0, 256);
	int nRet = RP2AP(a, b);

	if (nRet ==1 )
		cout << b << endl;

    system("pause");    
    return 0;    
} 


2.一个10*10的矩阵(可以理解为棋盘),随时生成一组数据填入矩阵,任何一个位置的数字除4进行计算,按余数着色,余数为0着色为red,1为blue,2为green,3为black,可以理解为生成4中颜色的棋子放入棋盘,如果存在其中同色五星连珠的情况(规则通五子棋),找出任意一组,输出5个棋子的位置下标值。

3.

有两个文件context.txt和words.conf,请尝试将他们合并成为一段文字,并打印出来。

这两个文件内容如下:

context.txt

“并不是每个人都需要$(qunar)自己的粮食,$(flight.1)每个人都需要做自己穿的$(fight.2),我们说着别人发明的$(hotel),使用别人发明的数学......我们一直在$(tuan)别人的成果。使用人类的已有经验和知识$(travel.1)来进行,是一件$(travel.2)的事情”


word.conf

flight=也不是:衣服

qunar=种植

hotel=语言

tuan=使用

travel=发明创造:很了不起

4.

一个文件里有10个随机正整数,按照以下规则能组合出一份新的数据:

A.如果当前数字能被3整除,那么它和文件中所有数字(包括自己)两两相加后生成一组数字替代自己的位置。

B.如果不能被3整除,则它只需要乘以二,生成一个数字替代自己的位置。

例如:[3,7,6]会组合出[6,10,9,14,9,13,12]

再如:[5,12,9,6,2]会组合出[10,17,24,21,18,14,14,21,18,15,11,11,18,15,12,8,4]

写一个程序找出并打印出新数据的最小的前200个数字。请考虑优化算法复杂度。

5.已知字母序列【d, g, e, c, f, b, o, a】,请实现一个函数针对输入的一组字符串 input[] = {"bed", "dog", "dear", "eye"},按照字母顺序排序并打印。

本例的输出顺序为:dear, dog, eye, bed。

6.有一万个北京单身男女向你提交了基本资料,包括:姓名、性别、年龄、星座,写一段程序尝试找出他们最匹配的一对。


转载请注明原创链接:http://blog.youkuaiyun.com/wujunokay/article/details/12233087




资源下载链接为: https://pan.quark.cn/s/9648a1f24758 这个HTML文件是一个专门设计的页,适合在告白或纪念日这样的特殊时刻送给女朋友,给她带来惊喜。它通过HTML技术,将普通文字转化为富有情感和创意的表达方式,让数字媒体也能传递深情。HTML(HyperText Markup Language)是构建页的基础语言,通过标签描述页结构和内容,让浏览器正确展示页面。在这个特效页中,开发者可能使用了HTML5的新特性,比如音频、视频、Canvas画布或WebGL图形,来提升视觉效果和交互体验。 原本这个文件可能是基于ASP.NET技术构建的,其扩展名是“.aspx”。ASP.NET是微软开发的一个服务器端Web应用程序框架,支持多种编程语言(如C#或VB.NET)来编写动态页。但为了在本地直接运行,不依赖服务器,开发者将其转换为纯静态的HTML格式,只需浏览器即可打开查看。 在使用这个HTML特效页时,建议使用Internet Explorer(IE)浏览器,因为一些老的或特定的页特效可能只在IE上表现正常,尤其是那些依赖ActiveX控件或IE特有功能的页面。不过,由于IE逐渐被淘汰,现代页可能不再对其进行优化,因此在其他现代浏览器上运行可能会出现问题。 压缩包内的文件“yangyisen0713-7561403-biaobai(html版本)_1598430618”是经过压缩的HTML文件,可能包含图片、CSS样式表和JavaScript脚本等资源。用户需要先解压,然后在浏览器中打开HTML文件,就能看到预设的告白或纪念日特效。 这个项目展示了HTML作为动态和互动内容载体的强大能力,也提醒我们,尽管技术在进步,但有时复古的方式(如使用IE浏览器)仍能唤起怀旧之情。在准备类似的个性化礼物时,掌握基本的HTML和页制作技巧非常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值