题解2

41 阅读1分钟

问题描述

小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'

这个题目只需要通过判断按照题目要求去添加,和删除前导0就欧克了,代码实现也不难,代码如下:

#include <string>
#include <iostream>
using namespace std;
string solution(const std::string& s) {
	int cnt=s.length();
    for(int i=0;i<s.length();i++)
		{
			if(s[i]=='.')
				cnt=i;
		}
	bool flage=false;
	string c="";
	for(int i=0;i<s.length();i++)
		{
			if(s[i]!='0')
				flage=true;
			if(flage)
			{
				if((cnt-i-1)%3==0&&i!=cnt-1&&i<cnt)
				{
					c+=s[i];
					c+=',';
				}
				else
					c+=s[i];
			}
		}
    return c;
}

int main() {
    cout << (solution("1294512.12412") == "1,294,512.12412") <<endl;
    cout << (solution("0000123456789.99") == "123,456,789.99") <<endl;
    cout << (solution("987654321") == "987,654,321") <<endl;
}