文档章节

每日一道笔试题_第1题

Endroid
 Endroid
发布于 2013/09/17 20:32
字数 485
阅读 64
收藏 1
/**
* 题目:将字符数组a转换成apple an is this,可以把它叫做字符数组单词逆序
* 要求:1、不能开辟新的数组或者其他内存单元,使其空间复杂度为O(1)
*          {空间复杂度:空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度
*           如当一个算法的空间复杂度为一个常量,即不随被处理数据量n的大小而改变时,可表示为O(1)
*           表示该程序所占用的空间和所用数据量无关}
*       2、不能使用C++特性
*/

#include <stdio.h>

void swap(const char str[], char *head, char *tail);

void main()
{
	char str[] = {'t','h','i','s',' ','i','s',' ','a','n',' ','a','p','p','l','e','\0'};
	/**
	* 思路:先整个字符串做反转操作,然后在对其中的单词做反转操作
	*/
	
	char *head = str;	// 头指针
	char *p = str;	// 活动指针
	
	while(*p != '\0')
	{
		p++;	// 指针移到最后,指针只能做移动操作,而不能指哪打哪
	}
	p--;	// '\o'不做反转操作,留着做字符串结束符
	
	char *tail = p; // 尾指针
	swap(str, head, tail);		// 全部反转
	
	p = str;
	while(*p != '\0')
	{
		if(*p == ' ') 
		{
			tail = p - sizeof(char);	
			// 将指针指向上一个元素的地址,数组是连续的存储单元,这里直接用地址减去一个char单元大小
			swap(str, head, tail);	// 反转字符串中的单词
			head = p;		// 反转后在移动指针
			if(*head == ' ')
				head++;
		}
		p++;
	}
	
	// 此时p指针已经移动到最后一个元素了
	if(*p == '\0')	/* 反转最后一个单词 */
	{
		tail = p - sizeof(char);
		swap(str, head, tail);	// 反转字符串中的单词
	}
	
	printf(str);
	printf("\n");
	
	
	head = NULL;	// 防止野指针
	p = NULL;		// 防止野指针
	tail = NULL;	// 防止野指针
	
}

/************************************************************************/
/*  功能:反转字符数组中指定开头和结束位置的字符                        */
/************************************************************************/
void swap(const char str[], char *head, char *tail)
{
	
	while(head < tail)
	{
		char c = *head;
		*head = *tail;
		*tail = c;
		
		head++;
		tail--;
	}
}

© 著作权归作者所有

Endroid
粉丝 8
博文 46
码字总数 68781
作品 0
深圳
程序员
私信 提问
【半月刊】前端高频面试题及答案汇总

引言 前段时间在 GitHub 中建了一个 Daily-Interview-Question 项目,每天提供一道高频面试题给大家,帮助大家查漏补缺,今天就把最近半月汇总的面试题和部分答案发给大家,希望对大家有所帮...

木易杨说
02/18
0
0
一道笔试算法题

题目如下:1,2,3,5,8,13…设计一个递归算法求第30位数字。 C#实现: private static int Func1(int max, int current, int c1, int c2) { if(current == 3) Console.Write("1,2,"); int c3 ......

彭博
2012/03/09
95
0
微软等公司数据结构+算法面试100题

1.把二元查找树转变成排序的双向链表(树) 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 10 / / 6 14 / / / / 4 ...

chambai
2012/08/05
0
0
九月十月百度,迅雷,华为,阿里巴巴最新校招笔试面试二十题(10.12)

九月十月百度,迅雷,华为,阿里巴巴,最新校招笔试面试二十题 题记 本博客自2010年10月11日开通以来,已经帮助了一大批人找到工作,特别是连续三年在每一年的9、10月份陪伴了至少三届毕业生...

mickelfeng
2013/10/12
244
0
百度2010暑期实习笔试面试全面备战

百度2010暑期实习笔试面试全面备战 百度2010暑期实习网申将于2010年5月29日截止。 笔试阶段 5月30日前,对于通过了简历筛选的申请人百度将会通过系统发送笔试通知。注册时请务必填写正确有效...

长平狐
2013/01/06
174
0

没有更多内容

加载失败,请刷新页面

加载更多

【2019个推开发者节】航母级APP都在用的SDK现在全部免费,35岁老程序员表示第一次见!

1024程序员节来了 双11近了 各路满减、折扣、领券、秒杀、集赞 营销玩法猛于虎,一看优惠两毛五 日常拼命赶“需求” 修“Bug”的开发者们 想找个好用又不贵的工具太难了 亲爱的开发者们,不要...

个推
35分钟前
9
0
Ceph对可用存储空间的校验与控制

Ceph一共使用了四个配置对可用存储空间进行校验并实施控制,如下: mon_osd_full_ratio:集群中的任一OSD空间使用率大于等于此数值时,集群将被标记为Full,此时集群将停止接受来自客户端的写...

浪里个浪浪
36分钟前
11
0
工厂方法模式

1.定义:创建一个接口,协助创建其它对象 2.优缺点 优: a.用户只需要知道这个工厂是创建哪种对象的,不需要知道创建的过程 b.满足开闭原则(开闭原则:对扩展开放,对修改关闭,即增加类可以...

wen123
38分钟前
6
0
Bootstrap Table -detailView和detailFilter的使用

查看表格 detailFilter 属性:data-detail-filter Type:Function Default:function(index,row){ return true} detailView 属性:data-detail-view Type:Boolean Default:false <table id="ta......

tianyawhl
43分钟前
4
0
场效应管的注意事项

  (1)为了安全使用场效应管,在线路的设计中不能超过管的耗散功率,最大漏源电压、最大栅源电压和最大电流等参数的极限值。   (2)各类型场效应管在使用时,都要严格按要求的偏置接入...

仙溪
46分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部