博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
166. Fraction to Recurring Decimal
阅读量:6531 次
发布时间:2019-06-24

本文共 1429 字,大约阅读时间需要 4 分钟。

一、题目

  1、审题

  

  2、分析

    给出一个整数分子,一个整数分母。求商。若商为无限循环有理数,用括号包裹循环的小数。

 

二、解答

  1、思路:

    ①、先确定商的符号;可以采用 ^ 运算符;

    ②、计算商的整数部分;

    ③、计算商的小数部分;同时用一个 Map 记录当前小数数值以及插入的下标,用于判断是否是循环有理小数,并根据下标的位置插入括号。

public String fractionToDecimal(int numerator, int denominator) {             if(numerator == 0)            return "0";                StringBuilder res = new StringBuilder();                // "+" or "-", ^ :  1 ^ 0 = 1, 1^1 = 0^0 = 0        res.append(((numerator > 0) ^ (denominator > 0)) ? "-" : "");        long num = Math.abs((long)numerator);        long den = Math.abs((long)denominator);    // 防止  -2147483648 溢出        // Integer part        res.append(num / den);        num %= den;        if(num == 0)            return res.toString();                // fractional part        res.append(".");        HashMap
map = new HashMap<>(); map.put(num, res.length()); while(num != 0) { num *= 10; // * res.append(num / den); num %= den; // 判断是否为无限循环小数 if(map.containsKey(num)) { int index = map.get(num); res.insert(index, "("); res.append(")"); break; } else { map.put(num, res.length()); } } return res.toString(); }

 

转载于:https://www.cnblogs.com/skillking/p/9794940.html

你可能感兴趣的文章
linux 单网卡来绑定多IP实现多网段访问以及多网卡绑定单IP实现负载均衡
查看>>
oracle数据库存储过程的运用之print_table
查看>>
部署SSL证书解决ios7.1的app下载问题
查看>>
中电信天翼3G网络覆盖西沙群岛多座岛礁
查看>>
从《大闹天宫》到《大圣归来》
查看>>
我的友情链接
查看>>
redis配置
查看>>
shell vi copy
查看>>
maven pom.xml 配置 cxf-codegen-plugin 生成web服务客户类型
查看>>
Java 时间转化工具类 Date <->String<->Timestamp
查看>>
Windows Server 2003 WDS(Windows部署服务)
查看>>
验证输入的表达式是不是正确的四则运算,不考虑负数
查看>>
centos 安装 salt
查看>>
接口管理工具
查看>>
10年前为什么开发部的经理没能力做好?
查看>>
git push能否删除服务器上的提交
查看>>
Centos7 HA操作指南
查看>>
我的友情链接
查看>>
整理ARM微处理器的指令集
查看>>
pssh批量管理linux主机ssh的工具
查看>>