数字字符串格式化 | 豆包MarsCode AI刷题

78 阅读2分钟

Java 代码实现了一个格式化数字字符串的功能,使其符合美国电话号码的格式,即每三个数字后跟一个逗号,除了最后一个数字块。此外,它还能处理包含小数点的数字,将小数点前的部分格式化,并保持小数点及其后的数字不变。

代码详解

  1. 辅助方法 addCommas:

    • 接收一个数字字符串 number
    • 使用 StringBuilder 来构建格式化后的字符串。
    • 遍历数字字符串的每个字符,将其添加到 formatted
    • 每三个数字后(除了最后三个),添加一个逗号,除非是字符串的最后一个字符。
  2. 主要方法 solution:

    • 检查输入字符串 s 是否为 null 或空,如果是,返回空字符串。
    • 使用正则表达式 s.replaceFirst("^0+(?!$)", "") 去除数字前的零。
    • 检查字符串是否包含小数点,如果是,记录小数点的位置。
    • 根据小数点的位置,将字符串分为整数部分和小数部分。
    • 调用 addCommas 方法格式化整数部分。
    • 将格式化后的整数部分与小数部分拼接,形成最终的格式化字符串。
  3. 主函数 main:

    • 包含三个测试样例,验证 solution 方法的正确性。

代码逻辑

-输入检查:首先检查输入字符串是否有效。 -零去除:去除数字前的零,除非是数字的第一个字符。 -小数点处理:如果字符串包含小数点,记录其位置,并根据此分割整数和小数部分。 -格式化:格式化整数部分,使其每三个数字后跟一个逗号。 -拼接:将格式化后的整数部分与小数部分(如果有)拼接。

应用场景

这种格式化在处理财务数据、电话号码、邮政编码等需要特殊格式的数字时非常有用。它可以帮助提高数据的可读性和一致性。

扩展思考

-国际化:根据不同国家的数字格式习惯,可以调整逗号插入的规则。 -错误处理:增加对非法输入的处理,如负数或包含非数字字符的字符串。 -性能优化:对于非常长的数字字符串,考虑性能优化,可能需要更高效的字符串处理方法。

结论

这段代码通过动态规划算法有效地解决了编辑距离问题,提供了一种通用的解决方案,可以应用于多种场景。通过理解其逻辑和效率,可以更好地应用到实际问题中。