zoukankan      html  css  js  c++  java
  • hdu2054 不要想太多,这就一水题

    原题链接

    我早该想到这是一道水题,因为这道题在杭电OJ题库的第11页,这一页基本上全是水题。。。但是看讨论区,大家实在想的太多了,没那么复杂。。

    题目是比较两个数是否相等,当然也不是直接用等于号=比较两个整型这么简单。因为这也是一道大数题,不过大家也完全没有必要想的太多!!!我在wa了之后变去讨论区看了这题该注意的情况,里面好多人讲了好多种要注意的情况,我尝试着都考虑到程序里,结果换来了更多的WA,确实考虑很多情况,写个完善的代码比较困难的。但是后来里面有人提到了大家都想的得太多了!!!我就试着按他的考虑不多的情况去考虑,结果就AC了。。强烈建议大家注意的地方:

    • 只需考虑小数点后有多个0的情况,比如1.000 和 1比较
    • 不需要考虑前导0,即不会出现0000100
    • 不需考虑正负号,即只有无符号数
    • 不会出现这种 .100 这种逆天的数据,即不可能小数点开头
    #include<iostream>
    using namespace std;
    #include<string>
    void trim0(string& b)
    {
    	int len = b.length();
    	if(b.find('.')!=string::npos)
    	{
    		for(int i=len-1;b[i]=='0';i--)
    			len--;
    		b=b.substr(0,len);
    	}
    	if(b[len-1]=='.')
    		b=b.substr(0,len-1);
    }
    void main()
    {
    	string a,b;
    	while(cin>>a>>b)
    	{
    		trim0(a);
    		trim0(b);
    		if(a==b)
    			cout<<"YES"<<endl;
    		else
    			cout<<"NO"<<endl;
    	}
    }

    可以用这题来熟悉一下string类型的操作,c++中的字符串string的本质也是STL中的容器。和其他容器有很多相同的方法,也有push_back、clear这种。而且string提供了较为丰富的函数。我这里只用到了两个。
    find()方法:查找字符串中是否含有某一字符。也有一个重载方法可以用来查找字符串。如果找不到不是返回-1,而是返回一个static成员-------string::npos;
    substr()方法:顾名思义,就是用来截取子串的。以前只知道Java中的String有subString方法可以截取子串,却不在c++的String也有。汗颜。
    substring(i);会从下标为i的位置截取到末尾,注意下标从0算起。
    substring(a,b);会从下标为a的位置截取,b是要截取的长度。貌似大多数语言里面截取子串都是这样的。并不是使用首末位置的下标。
    比如:
    s=“12345”;
    s.substring(3);//那么返回值是“45”
    s.substring(0,3);//那么返回值是“123”
    注意截取子串操作对于原字符串不会产生影响!

  • 相关阅读:
    关于CLR、CIL、CTS、CLS、CLI、BCL和FCL
    (DateTime)日期型数据转换成C#长整型数据
    List<T>.FindIndex 方法 (Predicate<T>)
    C#用int的0--31位表示32个bool值,int拆分成bool数组
    C# 协程 WaitForSeconds产生GC(Garbage Collection)问题
    Unity3D教程:尽量避免使用foreach
    NGUI中button无法用find函数找到
    Vue + axios + SpringBoot 2实现导出Excel
    Kafka 0.10.1版本源码 Idea编译
    Gradle Wrapper
  • 原文地址:https://www.cnblogs.com/unclejelly/p/4082084.html
Copyright © 2011-2022 走看看