博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
100-90
阅读量:6037 次
发布时间:2019-06-20

本文共 1277 字,大约阅读时间需要 4 分钟。

hot3.png

1.不开辟用于交换数据的临时空间,如何完成字符串的逆序
(在技术一轮面试中,有些面试官会这样问)。
2.删除串中指定的字符
(做此题时,千万不要开辟新空间,否则面试官可能认为你不适合做嵌入式开发)

3.判断单链表中是否存在环。

思路:

1.这道题的关键是解决怎么不借用额外的空间来交换两个变量,这里面的技巧是采用异或的方式,相同的变量异或结果为1,任何变量同1异或结果不变。

void change(char *first,char *second){	*first = *first ^ *second;	*second = *first ^ *second;	*first = *first ^ *second;}void reversed(char *index,char size){	if(size <= 1){		return ;	}	for(int i = 0 ; i < size / 2 ; ++i){		change(index+i,index+size-1-i);	}}
2.
删除串中指定的字符,这样的题目应该就是顺序扫描字符串,直到找到要删除的字符,然后接下来依次复制后面的一个元素覆盖当前元素就可以了。到最后一个元素的时侯释放,或者怎么操作无所谓了。

void delIndex(char *index,int size,char pattern){	if(size <= 0){		cout << "index is empty!" << endl;		return ;	}	int pIndex = 0;	while(index[pIndex] != pattern){		++pIndex;		if(pIndex == size){			cout << "can't match the pattern!" << endl;			return ;		}	}	while(pIndex < size-1){		index[pIndex] = index[pIndex+1];		++pIndex;	}	index[pIndex] = '\0';}
3.老题了。。两个指针,一个一次走一个节点,另一个一次走两个节点。如果什么时候两个指针指向同一个节点就说明链表有环,如果遇到某个指针为空,则说明链表没有环。

bool hasLoop(slist * head){    slist * slow = head , * fast = head;    while( fast && fast -> next ){        slow = slow -> next;        fast = fast -> next -> next;        if ( slow == fast ) break ;    }    return ! (fast == NULL || fast -> next == NULL);}

转载于:https://my.oschina.net/dapengking/blog/101490

你可能感兴趣的文章
企业架构研究总结(22)——TOGAF架构开发方法(ADM)之信息系统架构阶段
查看>>
接口测试(三)--HTTP协议简介
查看>>
周志华《机器学习》课后答案——第4章.决策树
查看>>
frameset分帧问题
查看>>
特殊样式:ime-mode禁汉字,tabindex焦点
查看>>
linux
查看>>
Layout父元素点击不到的解决办法
查看>>
【面试次体验】堆糖前端开发实习生
查看>>
基于apache实现负载均衡调度请求至后端tomcat服务器集群的实现
查看>>
C#+QQEmail自动发送邮件
查看>>
[Hadoop]MapReduce多输出
查看>>
Android Activity详解(一)
查看>>
快准车服完成3000万元A+轮融资,年底将开始B轮融资
查看>>
让我去健身的不是漂亮小姐姐,居然是贝叶斯统计!
查看>>
MySQL 数据约束
查看>>
我的友情链接
查看>>
SERVLET容器简介与JSP的关系
查看>>
《服务器SSH Public Key认证指南》-补充
查看>>
我的友情链接
查看>>
Java break continue return 的区别
查看>>