华为面试题求解?

weiguangjin 发布于 2013/04/16 18:56
阅读 359
收藏 1

给定两个手机号码(手机号码包含数字字符,最长为20个字符)请编写函数,求出号码之间的总数(包括给定的号码)例如给定开始号码1和结束号码9返回的结果为9.


加载中
0
地瓜儿
地瓜儿
这个与查找字符串个数差不多的
0
乾坤摄
乾坤摄
你的题意思没有表达清楚
0
weiguangjin
weiguangjin

题吗就是这样的

0
weiguangjin
weiguangjin

我都不明白题目的意思

 

0
骠骑将军
骠骑将军

最长20位,假如给出的号码长度分别为a和b

如果a==b,从最小到最大,直接数就行.因为长度一样.

如果a!=b,不是一般性,设a>b,

1)先数b到和b等长的999...9的个数,直接数

2)然后数和a等长的100...0到a的个数,直接数

3)然后从计算位数[b+1,a-1]在之间的个数,用循环(循环计数是i),每循环一次号码个数增加增加10^i个(例如b是2位,a是4位,就加上10^3个;如果b是2位,c是5位,就加10^3+10^4个)

数完就是个数.

0
xdev
xdev

如果是java的就用BigInteger好办,可是面试不是这意图,

我个人提供两种方式,一个使用两数组存储,就像咋没小学学的算术运算;另一个自己实现位运算,解一个算就是加上一个数的负数,使用补码,后面大家想得到就不说啦

0
leo108
leo108
难道是我理解错了?不就是大数的a-b么
0
libing64
libing64
自己用数组写一个大整数减法,一看就是数值溢出的问题,20位超出了int64的表示范围
返回顶部
顶部