中文数字转int

来源:互联网 发布:英语四级乱序词汇软件 编辑:程序博客网 时间:2024/06/05 10:38

异常的情况很多,但是正常情况这个是对滴。。。


用栈实现转化:
如果新读入的汉字(假设它代表的数字为N)比栈顶数字还要大
{
  弹出栈中所有比N小的元素,并将这些元素累加,假设结果为S;
  将S*N入栈;
}
否则
{
  将N直接入栈;
}
最后将栈中所有数字相加。

 

Exp:一亿一千二百五十八万三千二百四十(112,583,240)
第1步==>处理“一”,N=1
直接入栈,
此时栈中元素为:1 (右侧是栈顶)
第2步==>处理“亿”,N=100000000
弹出栈中唯一的元素,然后S=1,将S*N=100000000入栈
此时栈中元素为:100000000
第3步==>处理“一”,N=1
直接入栈
栈中元素为:100000000,1
第4步==>处理“千”,N=1000
弹出栈中比N小的元素(只有一个),然后S=1,将S*N=1000入栈
此时栈中元素为:100000000,1000
第5步==>处理“二”,N=2
直接入栈
此时栈中元素为:100000000,1000,2
第6步==>处理“百”,N=100
弹出栈中比N小的元素(只有一个),然后S=2,将S*N=200入栈
此时栈中元素为:100000000,1000,200
第7步==>处理“五”,N=5
直接入栈
此时栈中元素为:100000000,1000,200,5
第8步==>处理“十”,N=10
弹出栈中比N小的元素(只有一个),然后S=5,将S*N=50入栈
此时栈中元素为:100000000,1000,200,50
第9步==>处理“八”,N=8
直接入栈
此时栈中元素为:100000000,1000,200,50,8
第10步==>处理“万”,N=10000
弹出栈中比N小的元素(有四个),然后S=1258,将S*N=12580000入栈
此时栈中元素为:100000000,12580000

转自:

http://blog.csdn.net/zyr1984/article/details/5803786


0 0
原创粉丝点击