码迷,mamicode.com
首页 > 其他好文 > 详细

杭电2054

时间:2017-10-28 23:10:02      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:一起   没有   处理   进一步   space   解决   cin   范围   sub   

技术分享

最开始看到这道题是很早之前,当时刚刚开始在hdu写题想着这题太简单了,就吧啦吧啦按照一般常规的思维判断两个数相等,等WA之后想了好久才发现它并没有给出输入的数的范围,所以这里要用字符串的输入来解决了。总结一下这道题要注意的地方:

1、没给出数的范围,要用字符串来输入。

2、用字符串输入要注意0的处理。

3、最先想到是用字符串数组,但是对于一个比较懒的人来说,当然是怎么写简单怎么写的啦。所以就想到了直接用string解决。

先贴代码:

 1 #include<iostream>
 2 #include <cstring>
 3 #include <string>
 4 
 5 using namespace std;
 6 string solve(string a){
 7     if(a.find(".")!=a.npos){//如果是小数
 8         while((a.substr(a.length()-1,1))=="0"){//删掉末尾的0
 9             a=a.substr(0,a.length()-1);
10         }
11         if((a.substr(a.length()-1,1))=="."){//这是判断如果小数点后全是0,则把小数点一起去掉
12             a=a.substr(0,a.length()-1);
13         }
14     }
15     while(a[0]==0){//删掉最前面的0
16             a=a.substr(1);
17     }
18     return a;
19 }
20 int main(){
21     string a,b;
22     while(cin>>a>>b){
23         a=solve(a);
24         b=solve(b);
25         if(a.substr(0)!=b.substr(0)){
26             cout<<"NO"<<endl;
27         }else{
28             cout<<"YES"<<endl;
29         }
30     }
31     return 0;
32 }

然后也学到了新知识:

1、判断str1里面是否有str2:(首先要有string库)

  str1.find(str2);//找到了返回下标,找不到返回str1.npos

2.s.substr();//s.substr(index)取以index起始到结尾的子串 s.substr(index,length)取以index为起始,长度为length的子串。

  删掉字符串最后一位:a=a.substr(0,a.length()-1),删掉第0位:a=a.substr(1,a.length()-1);或a=a.substr(1)

  判断最后一位是不是0:a.substr(a.length()-1,1)=="0"或a[a.length()-1]==‘0‘;

3.字符串相关操作:在尾部追加字符串的话可以a=a+str,同样也可以在首部追加a=str+a,取长度a.length();

4.函数传值是复制,要记得return。(有待进一步了解)

 

杭电2054

标签:一起   没有   处理   进一步   space   解决   cin   范围   sub   

原文地址:http://www.cnblogs.com/Young-C/p/7748408.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!