数字字符串格式化

小M在工作时遇到了一个问题,他需要将用户输入的不带千分位逗号的数字字符串转换为带千分位逗号的格式,并且保留小数部分。小M还发现,有时候输入的数字字符串前面会有无用的 0,这些也需要精简掉。请你帮助小M编写程序,完成这个任务。

测试样例

样例1:

输入:s = "1294512.12412" 输出:'1,294,512.12412'

样例2:

输入:s = "0000123456789.99" 输出:'123,456,789.99'

样例3:

输入:s = "987654321" 输出:'987,654,321'

问题理解

  1. 输入格式:输入是一个不带千分位逗号的数字字符串,可能包含小数部分,也可能不包含。
  2. 输出格式:输出是一个带千分位逗号的数字字符串,保留小数部分,并且去掉前面的无用 0

解题思路

  1. 去除前导零:首先需要去掉字符串前面的无用 0。可以使用 strip 方法去掉前导零。
  2. 分离整数和小数部分:将字符串分为整数部分和小数部分。可以使用 split 方法根据小数点进行分割。
  3. 处理整数部分:对整数部分进行千分位逗号的插入。可以从后往前每三位插入一个逗号。
  4. 合并结果:将处理后的整数部分和小数部分重新合并。

Python代码

def solution(s: str) -> str:# 去掉前导零s = s.lstrip('0')if s == '':s = '0'# 分离整数和小数部分if '.' in s:integer_part, decimal_part = s.split('.')else:integer_part, decimal_part = s, ''# 处理整数部分if len(integer_part) > 3:# 从后往前每三位插入一个逗号integer_part = ','.join([integer_part[max(i-3, 0):i] for i in range(len(integer_part), 0, -3)][::-1])# 合并结果if decimal_part:return f"{integer_part}.{decimal_part}"else:return integer_partif __name__ == '__main__':print(solution("1294512.12412") )print(solution("0000123456789.99") )print(solution("987654321"))

C#代码

using System;
using System.Text;class Program
{static string Solution(string s){// 去掉前导零s = s.TrimStart('0');if (s == ""){s = "0";}// 分离整数和小数部分string integerPart, decimalPart;if (s.Contains('.')){string[] parts = s.Split('.');integerPart = parts[0];decimalPart = parts[1];}else{integerPart = s;decimalPart = "";}// 处理整数部分if (integerPart.Length > 3){StringBuilder sb = new StringBuilder();int count = 0;for (int i = integerPart.Length - 1; i >= 0; i--){sb.Insert(0, integerPart[i]);count++;if (count % 3 == 0 && i != 0){sb.Insert(0, ',');}}integerPart = sb.ToString();}// 合并结果if (decimalPart != ""){return $"{integerPart}.{decimalPart}";}else{return integerPart;}}static void Main(string[] args){Console.WriteLine(Solution("1294512.12412") );Console.WriteLine(Solution("0000123456789.99") );Console.WriteLine(Solution("987654321"));}
}

 

这个题目主要考察以下几个编程和字符串处理方面的知识点:

1. 字符串操作

  • 去除前导零:使用 lstrip('0') 方法去除字符串前面的无用 0
  • 分割字符串:使用 split('.') 方法将字符串分割为整数部分和小数部分。
  • 插入字符:在字符串中插入逗号,实现千分位格式化。

2. 列表推导式

  • 逆序处理:使用列表推导式从后往前每三位插入一个逗号,然后逆序合并。

3. 条件判断

  • 处理特殊情况:如输入字符串为空或全为 0 的情况。
  • 合并结果:根据是否有小数部分,选择合适的格式返回结果。

4. 字符串格式化

  • 格式化输出:使用 f-string 或 format 方法将整数部分和小数部分合并成最终结果。

5. 边界条件处理

  • 处理边界情况:如输入字符串为 "0" 或 "0000" 等特殊情况。

总结

这个题目通过字符串操作、列表推导式、条件判断和字符串格式化等知识点,考察了编程者对字符串处理和逻辑思维的能力。通过解决这个问题,可以加深对这些知识点的理解和应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/885985.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初识算法 · 位运算(2)

目录 前言: 判定字符是否唯一 丢失的数字 比特位计数 只出现一次的数字III 前言: ​本文的主题是位运算,通过四道题目讲解,一道是判断字符是否唯一,一道是只出现一次的数字III,一道是比特位计数&…

Unity Assembly Definition Assembly Definition Reference

文章目录 1.Unity 预定义程序集2.Assembly definition3. Assembly definitions相关实验 1.Unity 预定义程序集 Unity 有4个预定义程序集: 阶段程序集名脚本文件1Assembly-CSharp-firstpassStandard Assets, Pro Standard Assets和Plugins文件夹下面的运行时脚本2A…

【征稿倒计时!华南理工大学主办 | IEEE出版 | EI检索稳定】2024智能机器人与自动控制国际学术会议 (IRAC 2024)

#华南理工大学主办!#IEEE出版!EI稳定检索!#组委阵容强大!IEEE Fellow、国家杰青等学术大咖领衔出席!#会议设置“优秀论文”“优秀青年学者报告”“优秀海报”等评优奖项 2024智能机器人与自动控制国际学术会议 &#…

[CKS] Create/Read/Mount a Secret in K8S

最近准备花一周的时间准备CKS考试,在准备考试中发现有一个题目关于读取、创建以及挂载secret的题目。 ​ 专栏其他文章: [CKS] Create/Read/Mount a Secret in K8S-CSDN博客[CKS] Audit Log Policy-CSDN博客 -[CKS] 利用falco进行容器日志捕捉和安全监控-CSDN博客[C…

5个非LLM软件趋势

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

社会工程骗局席卷金融机构

2024 年北美金融机构收到的社交工程诈骗报告数量比一年前增加了 10 倍。数据显示,诈骗现在占所有数字银行欺诈的 23%。 深度伪造和 GenAI 诈骗的危险日益增加 BioCatch 在其 2024 年北美数字银行欺诈趋势报告中公布了这些发现,该报告还详细说明了报告的…

读数据质量管理:数据可靠性与数据质量问题解决之道03数据目录

1. 同步数据 1.1. 不同的数据仓库和数据湖通过数据集成层来进行桥接 1.2. AWS Glue、Fivetran和Matillion等数据集成工具从不同来源收集数据,统一这些数据,并将其转换为上游来源 1.3. 数据集成的一个典型用例是收集数据湖的数据并以结构化格式将其加载…

【数据库】数据库迁移的注意事项有哪些?

数据库迁移是一个复杂且关键的过程,需要谨慎处理以确保数据的完整性和应用程序的正常运行。以下是一些数据库迁移时需要注意的事项: 1. 充分的前期准备 1.1 评估迁移需求 明确目标:确定迁移的具体目标,例如添加新字段、修改现…

LabVIEW开发相机与显微镜自动对焦功能

自动对焦是显微成像系统中的关键功能,通常由显微镜的电动调焦模块或特定的镜头系统提供,而工业相机则主要用于高分辨率图像的采集,不具备独立的自动对焦功能。以下是自动对焦的工作原理、实现方式及实际应用案例。 1. 自动对焦的工作原理 &a…

ReactPress与WordPress:两大开源发布平台的对比与选择

ReactPress与WordPress:两大开源发布平台的对比与选择 在当今数字化时代,内容管理系统(CMS)已成为各类网站和应用的核心组成部分。两款备受欢迎的开源发布平台——ReactPress和WordPress,各自拥有独特的优势和特点&am…

京东商品详情,Python爬虫的“闪电战”

在这个数字化的时代,我们每天都在和数据打交道,尤其是电商数据。想象一下,你是一名侦探,需要快速获取京东上某个商品的详细信息,但是没有超能力,怎么办?别担心,Python爬虫来帮忙&…

np.zeros_like奇怪的bug

import numpy as np aa np.array([[1,2,3],[2,3,3]]) cc np.random.randn(2,3) print(aa) print(cc)bb np.zeros_like(aa) print(bb)for i in range(bb.shape[0]):for j in range(bb.shape[1]):bb[i,j] cc[i,j]print(bb)结果如下 这里发现这个bb的结果是没有赋值的 正确做…

【时间之外】IT人求职和创业应知【34】-人和机器人,机器人更可靠

目录 新闻一:人形机器人产业持续高速增长,2026年中国市场规模将突破200亿元 新闻二:AI技术驱动设备厂商格局变化,部分厂商市占率快速提升 新闻三:华为与江淮汽车携手打造超高端品牌“尊界”,计划于明年春…

连接实验室服务器并创建虚拟环境,从本地上传文件到linux服务器,使用requirement.txt安装环境需要的依赖的方法及下载缓慢的解决方法(Linux)

文章目录 一、连接实验室服务器并创建虚拟环境二、从本地上传文件到linux服务器三、使用requirement.txt安装环境需要的依赖的方法及下载缓慢的解决方法(Linux)四、查看虚拟环境中安装包位置五、Linux scp命令复制文件报错: not a regular file六、pycharm远程ssh连…

WebSocket和HTTP协议的性能比较与选择

WebSocket和HTTP协议的性能比较与选择 引言: 在web应用开发中,无论是实时聊天应用、多人在线游戏还是实时数据传输,网络连接的稳定性和传输效率都是关键要素之一。目前,WebSocket和HTTP是两种常用的网络传输协议,它们…

Prompt Engineering 提示工程

一、什么是提示工程(Prompt Engineering) Prompt 就是发给大模型的指令,比如讲个笑话、用 Python 编个贪吃蛇游戏等;大模型只接受一种输入,那就是 prompt。本质上,所有大模型相关的工程工作,都是…

智慧水利综合解决方案

1. 引言 智慧水利综合解决方案集成了先进的信息技术与水利专业知识,旨在提升水资源管理与防洪减灾能力,实现水利管理的智能化与高效化。 2. 数字孪生技术 方案利用数字孪生技术构建流域数字模型,通过高精度模拟仿真,为水资源调度…

网络安全工程师要考什么证书

在当今数字化时代,网络安全已成为各行各业不可忽视的重要领域。随着网络攻击手段的不断升级,企业对网络安全人才的需求也日益迫切。网络安全工程师作为这一领域的专业人才,承担着保护企业信息安全、防范网络威胁的重要职责。那么,…

Python在数据科学中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 Python在数据科学中的应用 Python在数据科学中的应用 Python在数据科学中的应用 引言 Python 概述 定义与特点 发展历程 Python…

机器学习:决策树——ID3算法、C4.5算法、CART算法

决策树是一种常用于分类和回归问题的机器学习模型。它通过一系列的“决策”来对数据进行分类或预测。在决策树中,每个内部节点表示一个特征的测试,每个分支代表特征测试的结果,而每个叶节点则表示分类结果或回归值。 决策树工作原理 根节点&…