字节面试题:整数除法
题目描述:输入int a,int b,计算a/b,如果是无限循环小数需要把循环的情况输出出来,类似4/3=1.3(2),(2)表示从第二位开始循环
package org.example; import java.util.*; public class Main { public static String fractionToDecimal(int a, int b) { //计算 a / b if (a == 0) { return "0"; } StringBuilder result = new StringBuilder(); // Determine the sign if ((a < 0) ^ (b < 0)) { result.append("-"); } //转成long防止溢出 long num = Math.abs((long) a); long den = Math.abs((long) b); // Append the integer part result.append(num / den); num %= den; if (num == 0) { //说明整除了 return result.toString(); } result.append("."); // 开始处理小数的部分 Map<Long, Integer> map = new HashMap<>(); //哈希表记录每个余数出现的位置 while (num != 0) { if (map.containsKey(num)) { int index = map.get(num); result.insert(index, "("); result.append(")"); break; } map.put(num, result.length()); num *= 10; result.append(num / den); num %= den; } return result.toString(); } public static void main(String[] args) { //输入int a,int b,计算a/b,如果是无限循环小数需要把循环的情况输出出来,类似4/3=1.3(2),(2)表示从第二位开始循环 int a = 4; int b = 3; System.out.println(fractionToDecimal(a, b)); // 输出: "1.(3)" a = 1; b = 2; System.out.println(fractionToDecimal(a, b)); // 输出: "0.5" a = 2; b = 3; System.out.println(fractionToDecimal(a, b)); // 输出: "0.(6)" a = 1; b = 6; System.out.println(fractionToDecimal(a, b)); // 输出: "0.1(6)" } }#牛客激励计划#