微软100题(89)atoi实现

1.2005年11月15日华为软件研发笔试题。实现一单链表的逆转。
2.编码实现字符串转整型的函数(实现函数atoi的功能),据说是神州数码笔试题。如将字符
串 ”+123”123, ”-0123”-123, “123CS45”123, “123.45CS”123, “CS123.45”0
3.快速排序(东软喜欢考类似的算法填空题,又如堆排序的算法等)
4.删除字符串中的数字并压缩字符串。
如字符串”abc123de4fg56”处理后变为”abcdefg”。注意空间和效率。
(下面的算法只需要一次遍历,不需要开辟新空间,时间复杂度为O(N))
5.求两个串中的第一个最长子串(神州数码以前试题)。
如"abractyeyt","dgdsaeactyey"的最大子串为"actyet"。

解答:
1.ReverseList(ListNode* phead)

2.atoi考虑的要周全
#define INT_MAX ((int)0x7FFFFFFF)
#define INT_MIN ((int)0x80000000)
//#define INT_MAX (~(unsigned int)0/2) 
bool valid=true;
int myatoi(constchar * str)
{
	bool minus=false;
	long long result=0;
	valid=false;
	if(str==NULL)
		return0;
	while(*str=='')
		str++;
		if(*str=='-')
			{
				inus=true;
				str++;
			}
		else if(*str=='+')
			str++;
		if(*str<'0'||*str>'9')
			return0;
		valid=true;
		while(*str>='0' && *str<='9')
			{
				result=result*10+*str-'0';
				if((minus && result>INT_MAX + 1LL) || (!minus && result>INT_MAX))
					{
						valid=false;
						return0;
					}
				str++;
				}
		if(minus)
			result*=-1;
		return (int)result;
}


3.主要是Partition的写法

4.
void FuncStr(char* str)
{
	char* p1 = str;
	char* p2 = str;
	while (*p1 != '\0')
	{
		if(*p1<'0'||*p1>'9')
			*p2++ = *p1;
		p1++;
	}
	*p2 = '\0';
}


5.动态规划

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值