面试题三(字符串中提取数字)
来源:互联网 发布:淘宝买家的信用怎么升 编辑:程序博客网 时间:2024/05/24 15:37
字符串提取数字
完成函数
void take_num(const char *strIn, int *n, unsigned int *outArray)
如输入
strIn="ab00cd+123fght456-25 3.005fgh"
输出
n=6
outArray={ 0, 123, 456, 25, 3, 5 }
不考虑小数如3.005输出3和5
题目分析:将字符串转换成uint,按公式temp=0;temp=temp*10;temp+=str[i]-'0';一直循环。
对于一个数,如果前面是0的话,那么按上面公式也会把0去掉的,也就是会从第一个非零的数开始计数。比如005,temp=0;temp=temp*10(temp=0);temp+=str[i]-'0'(temp=0);当i=i+1时,
按上面过程计算,仍然有temp=0,直到第一个非零的数字出现,这也正符合数的形式。
#include <string.h>#include <stdio.h>#include <assert.h>void take_num(const char *strIn, int *n, unsigned int *outArray){assert(strIn!=NULL && n!=NULL && outArray!=NULL);int nCount=0;int lent=strlen(strIn);int temp=0;bool IsNum=false;for (int i=0;i<lent;i++){if (strIn[i]>='0'&& strIn[i]<='9'){IsNum=true;temp=temp*10;temp+=strIn[i]-'0';}elseif (IsNum){outArray[nCount]=temp;nCount++;IsNum=false;temp=0;}}if (IsNum) ///////一定要对最后一个进行判断,否则就会丢失最后一个数的信心{outArray[nCount]=temp;nCount++;}*n=nCount;}void main(){char str[100]="ab00cd+123fght456-25 3.005fgh12";int n=0;unsigned int outstr[100]={0};take_num(str,&n,outstr);printf("%d\n",n);for (int i=0;i<n;i++){printf("%u\t",outstr[i]);}printf("\n");}
其中返回的个数n和输出整型数的个数一样。可巧妙利用
- 面试题三(字符串中提取数字)
- 字符串中提取数字
- 字符串中提取数字
- 提取 字符串中 数字
- 字符串中提取数字
- 21. 微软面试题:字符串中找最长数字字符串
- 字符串中数字的提取
- 字符串中提取数字算法
- 从字符串中提取数字
- 从字符串中提取数字
- JS字符串中提取数字
- python提取字符串中数字
- 在字符串中提取数字
- JS字符串中提取数字
- Python 字符串中提取数字
- 字符串提取left函数(面试题)
- 从字母数字字符串中提取数字
- 从字母数字字符串中提取数字
- testNG相关问题的整理
- ubuntu中恢复面板
- 熊猫烧香完整源代码
- 得到圆角UITextView 及修改样式
- 详解Oracle序列和触发器的使用
- 面试题三(字符串中提取数字)
- 解决image.fromstream(Stream)参数无效的问题
- print diamond - 打印菱形
- 淡淡的话2
- win7删除服务的方法
- Java程序练习-F-收集证据
- AS3 右键菜单
- 线程的生命周期与线程状态
- MOSS2010开发环境搭建