如何去除long类型正整数末尾的所有尾随零?
去除Long类型正整数末尾所有零的方法
针对正整数的场景,这里提供两种高效的实现方式:
数学运算方法
通过循环对数值取模和除法操作,直接修改数值本身:
public static long stripTrailingZeros(long number) { while (number % 10 == 0) { number /= 10; } return number; }
逻辑说明:每次判断数值末尾是否为0(number % 10 == 0),若是则将数值除以10,直到末尾非0为止。由于输入都是正整数,无需处理数值变为0的边界情况。
字符串处理方法
借助正则表达式快速去除末尾的连续0,再转回Long类型:
public static long stripTrailingZeros(long number) { String numStr = Long.toString(number); // 匹配末尾一个或多个0并替换为空字符串 String strippedStr = numStr.replaceAll("0+$", ""); return Long.parseLong(strippedStr); }
逻辑说明:先将Long转为字符串,用正则0+$精准匹配末尾的连续0,替换后再转回Long类型。这种方法代码更简洁,适合对正则熟悉的场景。
两种方法都能处理示例中的情况:输入450000000返回45,输入2100返回21;若输入本身无末尾0(如123),会直接返回原数。
内容的提问来源于stack exchange,提问作者ycomp
相关产品推荐
相关产品推荐

