string85分求助!
查看原帖
string85分求助!
1077861
OceanInDreams楼主2024/8/18 22:30

我在使用了大量的string内置函数出现了WA的情况,请问是有什么特殊测试点吗?

我想到的:

  • 小数:0.0 , 120.021 , 0.00

  • 分数:0/0(虽然不会有这个)

目前就想到这些特殊,附上源码

#include <bits/stdc++.h>
using namespace std;
string in;
int symbolidx;//the index of symbol
int main()
{
	cin>>in;
	if(in.find('.')!=string::npos)//double
	{
		int pos=in.find('.');
		string beforesym=in.substr(0,pos);
		reverse(beforesym.begin(),beforesym.end());
		if(beforesym[0]=='0'&&beforesym.size()!=1)//zero at first
		{
			beforesym.erase(0,beforesym.find_first_not_of('0'));
		}
		cout<<beforesym<<'.';
		string aftersym=in.substr(pos+1);
		if(aftersym[0]=='0')//zero at first
		{
			aftersym.erase(0,aftersym.find_first_not_of('0'));
		}
		reverse(aftersym.begin(),aftersym.end());
		if(aftersym.size()==0)
		{
			cout<<0;
		}
		cout<<aftersym;
	}
	else if(in.find('/')!=string::npos)//double
	{
		int pos=in.find('/');
		string beforesym=in.substr(0,pos);
		reverse(beforesym.begin(),beforesym.end());
		if(beforesym[0]=='0'&&beforesym.size()!=1)//zero at first
		{
			beforesym.erase(0,beforesym.find_first_not_of('0'));
		}
		cout<<beforesym<<'/';
		string aftersym=in.substr(pos+1);
		reverse(aftersym.begin(),aftersym.end());
		if(aftersym[0]=='0')//zero at first
		{
			aftersym.erase(0,aftersym.find_first_not_of('0'));
		}
		if(aftersym.size()==0)
		{
			cout<<0;
		}
		cout<<aftersym;
	}
	else if(in.find('%')!=string::npos)//double
	{
		int pos=in.find('%');
		string beforesym=in.substr(0,pos);
		reverse(beforesym.begin(),beforesym.end());
		if(beforesym[0]=='0'&&beforesym.size()!=1)//zero at first
		{
			beforesym.erase(0,beforesym.find_first_not_of('0'));
		}
		cout<<beforesym<<'%';
	}
	else
	{
		reverse(in.begin(),in.end());
		cout<<in;
	}
	return 0;
}
//Luogu @OceanInDreams
2024/8/18 22:30
加载中...