面试题 05.02:二进制数转字符串
This commit is contained in:
parent
0caeb2e5b5
commit
94aa6b6fb9
@ -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> </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)
|
||||||
|
|
||||||
|
}
|
@ -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> </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>
|
Loading…
Reference in New Issue
Block a user