hdu 2054 A==B?

# include<iostream>
using namespace std;
void deal(string &s)
{
    int k=0;
    if(~s.find('.'))//存在小数点,两头删除0
    {
        while(s[k]=='0') k++;
        s.erase(0,k);
        k=s.size()-1;
        while(s[k]=='0') k--;
        s.erase(k+1);
    }
        else//是整数,从开头删除0
        {
            while(s[k]=='0') k++;
            s.erase(0,k);
        }
    if(s[s.size()-1]=='.') s.erase(s.size()-1);
}
int main()
{
    string a,b;
    while(cin>>a>>b)
    {
        //cout<<(a.find('.')==-1)<<endl;
        deal(a);
        deal(b);
//        cout<<a<<endl;
//        cout<<b<<endl;
        cout<<((a==b)?"YES":"NO")<<endl;
    }
    return 0;
}

 

最朴素的分类讨论(要是直接想出分类合并后的处理那就更好了),小数和小数比较 整数和整数比较 小树和整数比较(这里的小数是指带有小数点)

 其实是一边写一遍调试改出来的,处理思路是如果是有小数点从两头开始删除0,如果没有小数点,就从最高位开始删除0.

最后还需注意若是字符串最后一个元素为'.',说明这个数是整数,应该去掉小数点,若是0处理完后字符串为空。

具体出力时调用了 C++的库函数,向用C(未用库函数)和pascal实现的手打党致敬!

自己设计的样例。

0000.0001234500000

0000.000000000

0001.100000000

0000.3200000

0.0

5000000.0

0.50000

.12323345  

0

500000000

00005000000

posted @ 2014-05-20 11:00  So_Young  阅读(232)  评论(0编辑  收藏  举报