huyc

导航

2011年10月11日 #

将字符串转换为数字

摘要: 问题:写一个函数,检查字符是否是整数,如果是,返回其整数值。(或者:怎样只用4行代码编写出一个从字符串到长整形的函数?)想法:在不考虑负数的情况下,生成整数的基本做法就是不断做乘法,其实就是一个最基本的多项式:12345 = 1*10^4+2*10^3+3*10^2+4*10+5 = 10*(10*(10*(1*10+2)+3)+4)+5用程序很容易实现:#include <stdio.h>#include <ctype.h>int GetInt(const char *buf){ int r, sig; sig = 0; buf; if(*buf == '-& 阅读全文

posted @ 2011-10-11 18:53 huyc 阅读(496) 评论(0) 推荐(0)

寻找绝对值最小的对儿

摘要: 问题:有一个整数数组,请求出两两之差绝对值最小的值(记住,只要得出最小值即可,不需要求出是哪两个数)。想法:1.最起码的想法自然就是穷举了,复杂度相当高,两个循环,O(n^2),其实也不是很高哦。2.适当变换一下题目的说法,两两绝对值之差最小,想象一下数轴,绝对值是两者距离,距离之差最小,就是数轴上的数距离最小,那排序就是很自然地想法了,排序之后的搜索过程复杂度为O(n),也就是说,如果采用搜索法,复杂度下限就是Ω(n)。接下来是排序算法,根据《算法导论》,基于比较的排序的渐进下限O(nlgn),目前性能最好最实用的当属快排了,应用快排之后的算法复杂度当为O(nlgn)。不基于比较的算法可以把 阅读全文

posted @ 2011-10-11 17:21 huyc 阅读(1522) 评论(0) 推荐(0)

整数回文验证

摘要: 去笔试的时候,遇到一个回文题,想了好久,主要就是因为题目说验证一个int类型数是否为回文,之前写过却忘了,真是杯具,这次要写下来杜绝忘记。回文都是老题了,但是之前都是在说那啥字符串的回文,把首尾去掉,递归验证什么的,整数回文自然不应该用字符串那套,应该用堆栈。比如123321,一步步从后面出栈,就能得到一个123,两个数相等时就表示是回文了。如果是12321的话,堆栈卸出来123,后面这个数比较大时要么入栈一个3,要么出栈一个3,也就回文了。递归的解析也差不多,那个的数据结构叫做双头队列,头尾切掉,判断到最后一个元素,要么是字符,要么是空,只是整数要直接去掉最高位好像有点困难,当然也不是不行, 阅读全文

posted @ 2011-10-11 12:36 huyc 阅读(517) 评论(0) 推荐(0)