杭电ACM 2072:单词数
来源:互联网 发布:手机投影仪连接软件 编辑:程序博客网 时间:2024/05/18 16:14
原创作品 转载请注明出处http://blog.csdn.net/always2015/article/details/45598799
这一道题如果用最直接的方法要考虑的地方会比较多,但是这样做肯定是会AC的。我就是用这种方法。在我的代码里面最后用到了map容器,不熟悉的请看我的博文http://blog.csdn.net/always2015/article/details/44980187。我的AC代码如下,各段代码的含义我已经注释很清楚了:
#include <iostream>#include<string>#include<map>using namespace std;int main(void){ //input_str存储整行字符串,words存储每个单词 string input_str,*words; int lenght,flag=0,k=0,word_num=0;//word_num存储单词数 map<string,int> differ_word;//differ_word存储不同单词 while(getline(cin,input_str)) { if(input_str=="#") break;//输入“#”就退出 lenght=input_str.size(); /*这个循环主要是求出单词数, 注意:输入的字符串可能开头,中间,结尾都有一个或者多个空格 这些都要考虑在内 */ for(int i=0; i<lenght; i++) { //flag为判断标志,当判断第一个字符不为空时候,且flag为0时候开始计数 if(input_str[i]!=' '&&flag==0) { ++word_num; flag=1;//改变标志位的值,表示此时已经记过数了 continue; } if(flag==1) { //当flag==1说明已经即过数了。当碰到空的字符,说明这个单词已经扫描完成,重新置标志位flag //因为当扫描到最后一个字符时候i==lenght-1,如果最后没有空格,也要重新置flag if(input_str[i]==' '||i==lenght-1) { flag=0; } } } //为保存单词分配空间 words=new string[word_num]; /*下面一个for循环只要是保存字符串中的单词*/ for(int j=0; j<lenght; j++) { //当碰到的字符不为空则存储单词,注意这时候k的变化 if(input_str[j]!=' ') { words[k]+=input_str[j]; } //碰到空字符的判断 if(input_str[j]==' ') { //如果最后一个字符为空则跳出循环 if(j==lenght-1) break; /*如果空字符的下一个字符不为空,则下一个单词就是新的一个单词,k就加1 注意:当一个字符串开始时,有一个或者很多个空格时候,则k不能加1.因为会导致words[k]存储的是空字符 所以这里要判断当words[k],不为空时候k才加1 */ if(input_str[j+1]!=' '&&words[k]!=" ") ++k; } } //利用容器map统计单词不一样的个数 for(int h=0;h<word_num;h++) { ++differ_word[words[h]]; } //输出个数 cout<<differ_word.size()<<endl; //下面变量必须重新初始化。方面下一次循环使用 word_num=0; flag=0; k=0; differ_word.clear();//清空容器 } return 0;}
0 0
- 杭电acm 2072(单词数)
- 杭电ACM 2072:单词数
- 杭电 单词数 2072
- 杭电2072单词数
- 杭电2072 单词数
- 杭电2072 单词数
- 杭电2072 单词数
- 杭电2072-单词数
- 杭电 2072 单词数
- acm 杭电(hdu) 2072 单词数【用到了sscanf(首地址,,)】
- 杭电Hd 2072 单词数
- 杭电 HDU 2072 单词数
- 杭电OJ-2072_单词数
- 杭电oj2072单词数
- HDU ACM 2072单词数
- 杭电ACM水仙花数
- 杭电2072 单词数(Trie tree或者STL)
- 【杭电oj】2072 - 单词数(STL - string & map)
- win7下恢复QTP30天试用方法
- 成员函式的callback function
- DateUtil类
- CentOS使用grub进入single模式
- ibatis 参数和结果的映射处理
- 杭电ACM 2072:单词数
- LeetCode Search in Rotated Sorted Array
- Android车载导航的一些困境
- vim中的”上下左右键” 问题
- java中对集合对象list的几种循环访问总结
- java适配器模式
- Oracle GoldenGate: Logdump
- ZOJ 1586 QS Network
- LeetCode - Longest Substring Without Repeating Characters hash