百度算法面试题

[复制链接]
 楼主| gxgclg 发表于 2012-5-22 21:40 | 显示全部楼层 |阅读模式
题目如下:
在一个字符数组里面从左往右查找最早出现的连续数字字符,并转换为64位int型输出。包括正负号。首位字符为‘-’则为负数,首位不是‘-’则为正数。
例如:
字符串为“-sd13456fdfs4590fghf”,则输出数字-13456
字符串为“erwrw13456423424590fghf45353”,则输出数字13456423424590
因为输出的数字为64位,所以范围为-2^63~2^63-1。假如要输出数字超出此范围,则直接返回0,否则返回要输出的数字。

long long converse(const char *str)
{








}
yybj 发表于 2012-5-22 21:43 | 显示全部楼层
lz可以参考下面的程序:
long longconverse(const char *str)
{long result=0;
bool sgn;
if(str[0]=='-'){sgn=false;} else{sgn=true;}
int i=0;
while(str[i])!='\0')
{ while(str[i]>='0'||str[i]<'=9')
  {result=result*10+str[i]-'0';
  if(result<0){return 0;}
  i++;
  }
  if(result<>0)
  {return sgn?result:0-result;}
i++;
}

}
xsgy123 发表于 2012-5-23 14:29 | 显示全部楼层
这题目还是很有难度的
火箭球迷 发表于 2012-5-23 14:38 | 显示全部楼层
2楼的程序可行
shenmu2012 发表于 2012-5-23 18:11 | 显示全部楼层
看好2楼的程序啊
xsgy123 发表于 2012-5-23 21:29 | 显示全部楼层
2楼的程序应该是正确的
firstblood 发表于 2012-5-24 11:34 | 显示全部楼层
数字过滤啊,外加屏蔽后边数字的,不是很难的 啊
firstblood 发表于 2012-5-24 11:38 | 显示全部楼层
2楼的程序可以将字符串中第二次再出现的数字给过滤掉么?如:字符串为“erwrw13456423424590fghf45353”,则输出数字13456423424590
需要滤掉45353,像是少了这一步的啊
秋天落叶 发表于 2012-5-24 22:51 | 显示全部楼层
很基础的一道题
hsbjb 发表于 2012-5-25 16:00 | 显示全部楼层
求更多的百度面试题
xsgy123 发表于 2012-5-25 16:07 | 显示全部楼层
LS可以自己再搜搜,这类面试题应该很容易搜到的
 楼主| gxgclg 发表于 2012-5-25 23:06 | 显示全部楼层
多做一些这样的面试题,对找工作还是很有帮助的
397090770 发表于 2012-8-1 15:10 | 显示全部楼层
2# yybj
经坚定此程序是错误的!我最少检查出三处错误。其一:当你的程序参数为NULL你的程序会怎么样??其二:你返回的为long long,但是你的result定义为long 。其三:while(str>='0'||str<'=9')这个你能检测出str只是数字吗??请你贴出代码前自己先运行一下行不。。。别误人家子弟。。。


下面是我写的。
  1. long long findFirstNumber(const char *str){
  2.         if(str == NULL){
  3.                 return 0;
  4.         }
  5.        
  6.         int flags = 0;
  7.        
  8.         if(str[0] == '-'){
  9.                 flags = 1;       
  10.         }
  11.         int i = 0;
  12.         long long sum = 0;
  13.         bool findNum = false;
  14.         while(str[i]){
  15.                 if(str[i] >= '0' && str[i] <= '9'){
  16.                         findNum = true;
  17.                         while(str[i] >= '0' && str[i] <= '9'){
  18.                                 sum = sum * 10 + str[i] - '0';
  19.                                 if(sum < 0){
  20.                                         return 0;
  21.                                 }
  22.                                 i++;
  23.                         }
  24.                 }else{
  25.                         i++;
  26.                         if(findNum){
  27.                                 break;
  28.                         }
  29.                 }
  30.                
  31.         }
  32.         return flags?-sum:sum;
  33. }
firstblood 发表于 2012-8-3 14:53 | 显示全部楼层
楼上的代码很给力的,建议大家借鉴了的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

177

主题

1653

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

177

主题

1653

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部