algorithm - 如何从字符串中找到十进制和二进制?
问题描述
我有输入,例如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
A
toF
代表 nums 10
to15
解决方案
您应该意识到您可以从右到左或从左到右解码字符串。算法不同但直截了当。
您可以使用第一个碱基从左侧开始解码字符串,使用另一个碱基从右侧开始解码。
始终根据哪个值较小来解码另一个字符(从右开始解码的字符或从左开始解码的字符)。如果两个值相等,则为较小的基数再解码一位。
当两个解码都消耗了字符串的所有字符时,它们应该产生与您的结果相同的值。
例子:
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
推荐阅读
- css - 如何正确使 flex-box 子项滚动
- java - 在电子邮件正文中发送带有动态内容的图像
- python - 如何在 Scrapy 中抓取分页链接?
- c++ - 为什么我们应该在下面的代码中使用模板包装器?
- ruby - NeoVim/ALE/RuboCop/Syntastic 可以捕捉到这个 Ruby 错误吗?
- r - 按 R 中的一列值对数据框进行排序
- python - Sqlite3 / Python - 使用“?”将列增加 1 和更新,得到语法错误
- java - 如何在不同配置文件的属性中获取多个默认值?
- javascript - JavaScript:按最佳拟合组织矩阵
- node.js - 在节点中使用 promise-ftp 时出现未知命令