| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1141 人关注过本帖
标题:[求助]一个简单的头疼问题
只看楼主 加入收藏
见习小偷
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-3-15
收藏
 问题点数:0 回复次数:22 
[求助]一个简单的头疼问题

工作中遇到个问题比较烦人,希望高手能帮忙想个好算法!!不胜感激!
有一堆字符串,分别是:“42949672953” ,“ Ethernet3/1”, “ 00065800000”, “ 3687”, “ 45AD”, "53EF",、、、、、、、在很多很多这种数据堆中分捡出纯数字的串,和含有字母的串,要求是:不拆分字符进行比较运算!!(因为数据量超级大,这样效率狂低)(linux下C语言做),,,

搜索更多相关主题的帖子: 头疼 
2006-05-17 17:44
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
以下是引用见习小偷在2006-5-17 17:44:00的发言:

工作中遇到个问题比较烦人,希望高手能帮忙想个好算法!!不胜感激!
有一堆字符串,分别是:“42949672953” ,“ Ethernet3/1”, “ 00065800000”, “ 3687”, “ 45AD”, "53EF",、、、、、、、在很多很多这种数据堆中分捡出纯数字的串,和含有字母的串,要求是:不拆分字符进行比较运算!!(因为数据量超级大,这样效率狂低)(linux下C语言做),,,

不拆分字符进行比较运算?
那还有别的办法吗?
c有没有专门的函数??
您找下看看,


对不礼貌的女生收钱......
2006-05-17 18:04
见习小偷
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-3-15
收藏
得分:0 
我们曾用这个方法测试过:
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("%d\n",atoi(argv[1]));
return 0;
}
运行如下:
[bl@ncview test]$ ./test 5456321
5456321
[bl@ncview test]$ ./test fsdfa3200
0
[bl@ncview test]$ ./test 123365594999
2147483647
[bl@ncview test]$ ./test 000325fda
325
根据纯数字和非纯数字 字串返回的结果差异,来分别取原串与结果串的长度进行比较的方法,1、纯数字返回长度与结果长度一致,2、带0的数字可以加上取零的个数来比较长度.3、含字母的串返回为0或返回数字,其长度小于结果。。按这样的思路本来可以解决,但问题正如第三条运行结果一样,较长的纯数字串有溢出(或许不是溢出),结果与源串长度不同,就算用atoll转换,%llu输出,照样不能得到与源串相同的串。。望高手指点一二,或有其它算法!!!!谢谢了!!
2006-05-17 18:32
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
//仅供参考,不敢说高效率
#include<stdio.h>
#include<string.h>
void main( )
{ char a[]="0123456789";
char s[80],*p;
do
{
gets(s);
p=strtok(s,a);
if(p==NULL)
printf("pure digits\n");
else
printf("include alphabet\n");
}
while(1);
}

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-17 18:54
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
int fun(char *str)
{
while(*str)
{
if(*str<'0'||*str>'9')return 0;
str++;
}
return 1;
}

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2006-05-17 18:54
luo113927
Rank: 1
等 级:新手上路
帖 子:173
专家分:0
注 册:2006-3-15
收藏
得分:0 
斑竹的不是有拆分来比较吗
2006-05-17 19:07
roman
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-5-17
收藏
得分:0 
或者:
int fun(char *str)
{ int i =0;
while(*str)
{
if(*str < '0' || *str > '9')
i++;
}
if(i == strlen(*str))
return 1;
else
return 0;
}

智者乐观,仁者达观
2006-05-17 19:10
roman
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-5-17
收藏
得分:0 

斑竹的时间复杂度为O(n),要是拆分的话,时间复杂度为O(2n)or O(n)。


智者乐观,仁者达观
2006-05-17 19:14
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
以下是引用roman在2006-5-17 19:10:00的发言:
或者:
int fun(char *str)
{ int i =0;
while(*str)
{
if(*str < '0' || *str > '9')
i++;
}
if(i == strlen(*str))//你知道这个strlen是怎么实现的么?
return 1;
else
return 0;
}


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2006-05-17 19:22
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
atoi,strtok也好,都是要分解遍历字符串的

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2006-05-17 19:26
快速回复:[求助]一个简单的头疼问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030441 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved