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

113 阅读2分钟

问题背景 给定一个包含前导零和小数点的数字字符串s,我们需要对其进行格式化处理,去除前导零并在整数部分添加千分位逗号。如果字符串中有小数部分,保留小数部分不变。

解决方案 这个问题可以通过以下几个步骤来解决:

去除前导零: 使用字符串的lstrip方法去除所有前导零。 检查是否为空字符串: 如果去除前导零后字符串为空,说明原字符串全是'0',返回'0'。 分离整数部分和小数部分: 使用split方法检查字符串中是否包含小数点,如果有则分离整数部分和小数部分。 对整数部分添加千分位逗号: 使用Python的格式化功能'{:,}'.format(int(integer_part))将整数部分转换为带有千分位逗号的字符串。 重新组合字符串: 如果有小数部分,将整数部分和小数部分重新组合成最终的格式化字符串。 如果没有小数部分,直接返回带有千分位逗号的整数部分。 具体步骤 去除前导零: Python 深色版本 s = s.lstrip('0') 检查是否为空字符串: Python 深色版本 if not s: return '0' 分离整数部分和小数部分: Python 深色版本 if '.' in s: integer_part, decimal_part = s.split('.') else: integer_part, decimal_part = s, '' 对整数部分添加千分位逗号: Python 深色版本 integer_part_with_commas = '{:,}'.format(int(integer_part)) 重新组合字符串: Python 深色版本 if decimal_part: result = f"{integer_part_with_commas}.{decimal_part}" else: result = integer_part_with_commas 返回结果: Python 深色版本 return result 代码实现 Python 深色版本 def solution(s: str) -> str: # 去除前导零 s = s.lstrip('0')

# 检查是否为空字符串(例如,原始字符串全是'0')
if not s:
    return '0'

# 分离整数部分和小数部分
if '.' in s:
    integer_part, decimal_part = s.split('.')
else:
    integer_part, decimal_part = s, ''

# 对整数部分添加千分位逗号
integer_part_with_commas = '{:,}'.format(int(integer_part))

# 如果有小数部分,重新组合字符串
if decimal_part:
    result = f"{integer_part_with_commas}.{decimal_part}"
else:
    result = integer_part_with_commas

return result

if name == 'main': print(solution("1294512.12412") == '1,294,512.12412') print(solution("0000123456789.99") == '123,456,789.99') print(solution("987654321") == '987,654,321')