首页 > 解决方案 > 如何从字符串中找到十进制和二进制?

问题描述

我有输入,例如5 2 113221101000101('5' 是五进制,'2' 是二进制)我有一个number五进制和二进制但它们没有空格连接('113221101000101')。

所以我的问题是如何number通过5 2 113221101000101(数字是837)找到确切的</p>

我添加一些例子:

5 2 113221101000101 号码是837

13 7 1016号码是13

4 12 2222248A号码是682

AtoF代表 nums 10to15

标签: algorithm

解决方案


您应该意识到您可以从右到左或从左到右解码字符串。算法不同但直截了当。

您可以使用第一个碱基从左侧开始解码字符串,使用另一个碱基从右侧开始解码。

始终根据哪个值较小来解码另一个字符(从右开始解码的字符或从左开始解码的字符)。如果两个值相等,则为较小的基数再解码一位。

当两个解码都消耗了字符串的所有字符时,它们应该产生与您的结果相同的值。

例子:

5 2 113221101000101 the number is 837

1-------------1             
1 base 5      1 base 2  1=1 -> decode base 2

1------------01
1 base 5      1 base 2  1=1 -> decode base 2

1-----------101
1 base 5      5 base 2  1<5 -> decode base 5

11----------101
6 base 5      5 base 2  6>5 -> decode base 2

11---------0101    
6 base 5      5 base 2  6>5 -> decode base 2

11---------0101    
6 base 5      5 base 2  6>5 -> decode base 2

11--------00101
6 base 5      5 base 2  6>5 -> decode base 2

11-------000101 
6 base 5      5 base 2  6>5 -> decode base 2

11------1000101
6 base 5     69 base 2  6<69 -> decode base 5

113-----1000101    
33 base 5    69 base 2  33<69 -> decode base 5

1132----1000101
167 base 5   69 base 2  167>69 -> decode base 2

1132---01000101
167 base 5   69 base 2  167>69 -> decode base 2

1132--101000101
167 base 5  325 base 2  167<325 -> decode base 5

11322-101000101 
837 base 5  325 base 2  837>325 -> decode base 2

113221101000101    
837 base 5  837 base 2  finished

推荐阅读