面试题 05.02:二进制数转字符串

This commit is contained in:
轩辕龙儿 2023-03-03 10:49:39 +08:00
parent 0caeb2e5b5
commit 94aa6b6fb9
2 changed files with 91 additions and 0 deletions

View File

@ -0,0 +1,64 @@
//<p>二进制数转字符串给定一个介于0和1之间的实数如0.72类型为double打印它的二进制表达式如果该数字无法精确地用32位以内的二进制表示则打印ERROR</p>
//
//<p><strong>示例1:</strong></p>
//
//<pre>
//<strong> 输入</strong>0.625
//<strong> 输出</strong>"0.101"
//</pre>
//
//<p><strong>示例2:</strong></p>
//
//<pre>
//<strong> 输入</strong>0.1
//<strong> 输出</strong>"ERROR"
//<strong> 提示</strong>0.1无法被二进制准确表示
//</pre>
//
//<p>&nbsp;</p>
//
//<p><strong>提示</strong></p>
//
//<ul>
// <li>32位包括输出中的 <code>"0."</code> 这两位</li>
// <li>题目保证输入用例的小数位数最多只有 <code>6</code> </li>
//</ul>
//
//<div><div>Related Topics</div><div><li>位运算</li><li>数学</li><li>字符串</li></div></div><br><div><li>👍 99</li><li>👎 0</li></div>
package leetcode.editor.cn;
// 面试题 05.02:二进制数转字符串
public class BianryNumberToStringLcci {
public static void main(String[] args) {
Solution solution = new BianryNumberToStringLcci().new Solution();
// TO TEST
solution.printBin(0.625);
}
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public String printBin(double num) {
String str = "0.";
String strNum = "" + num;
while (strNum.endsWith("0")) {
strNum = strNum.substring(0, strNum.length() - 1);
}
while (num > 0 && strNum.endsWith("5")) {
num *= 2;
if (num >= 1) {
str += 1;
num -= 1;
} else {
str += 0;
}
strNum = "" + num;
while (strNum.endsWith("0")) {
strNum = strNum.substring(0, strNum.length() - 1);
}
}
return strNum.equals("0.") ? str : "ERROR";
}
}
//leetcode submit region end(Prohibit modification and deletion)
}

View File

@ -0,0 +1,27 @@
<p>二进制数转字符串。给定一个介于0和1之间的实数如0.72类型为double打印它的二进制表达式。如果该数字无法精确地用32位以内的二进制表示则打印“ERROR”。</p>
<p><strong>示例1:</strong></p>
<pre>
<strong> 输入</strong>0.625
<strong> 输出</strong>"0.101"
</pre>
<p><strong>示例2:</strong></p>
<pre>
<strong> 输入</strong>0.1
<strong> 输出</strong>"ERROR"
<strong> 提示</strong>0.1无法被二进制准确表示
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li>32位包括输出中的 <code>"0."</code> 这两位。</li>
<li>题目保证输入用例的小数位数最多只有 <code>6</code></li>
</ul>
<div><div>Related Topics</div><div><li>位运算</li><li>数学</li><li>字符串</li></div></div><br><div><li>👍 99</li><li>👎 0</li></div>