首页 > 代码库 > hdu 2072 单词数,set,strtok
hdu 2072 单词数,set,strtok
STL_set操作:
st.begin() | 返回指向第一个元素额迭代器 |
st.end() | 返回指向末尾元素的迭代器 |
st.rbegin() | 返回逆向迭代器,指向链表末尾 |
st.rend() | 返回指向开头之前位置的迭代器 |
st.clear() | 清空迭代器 |
st.count(key_type key) | 返回某个值元素的个数 |
st.empty() | 如果为空,返回true |
st.size() | 返回元素的数量 |
st.swap() | 交换两个集合变量 |
st.insert(val) st.insert(loc, val) st.insert(start, end); | 插入val元素,并返回指向该元素的迭代器和一个布尔值来说明val是否成功的被插入了。 在迭代器loc前插入val,并返回一个指向该元素的迭代器; 将迭代器start开始到end结束返回内的元素插入到集合中; |
st.erase(loc) st.erase(start,end) st.erase(key_type key) | 删除loc所指元素 删除[start,end)之间的元素 删除key值为value的元素,并返回删除的个数 |
st.find(key_type key) | 返回一个迭代器指向键值为key的元素,未找到返回end() |
pair<iterator start, iterator end> equal_range(const key_type &key) | 查找键值等于key的元素区间为[start, end),指示范围的两个迭代器以pair返回 |
st.lower_bound(key_type key) st.upper_bound(key_type key) | 返回一个迭代器指向>=key的第一个元素 返回一个迭代器,指向>key的第一个元素 |
strtok函数
#include <string.h>
char *strtok( char *str1, constchar *str2 );
功能:函数返回字符串str1中紧接“标记”的部分的指针,字符串str2是作为标记的分隔符。如果分隔标记没有找到,函数返回NULL。为了将字符串转换成标记,第一次调用str1指向作为标记的分隔符。之后所以的调用str1都应为NULL。
int main() {char str[] = "smart,calm,luck";
char *p; p = strtok(str, ",");
while(p){
printf("%s\n", p);
p = strtok(NULL, ",");
}
return 0;
}
运行结果:
smart
calm
luck
题意:
统计一篇文章里不同单词的总数。
Sample Input
you are my friend
you are my friend you are my friend
#
Sample Output
4
4
#include <cstdio> #include <cstring> #include <set> #include <string> #include <iostream> using namespace std; set<string> dict; int main() { char str[10000]; string s; while(gets(str)){ if(str[0]=='#') break; dict.clear(); char *p; p = strtok(str," "); while(p){ s = p; dict.insert(s); p = strtok(NULL," "); } printf("%d\n", dict.size()); } return 0; }
hdu 2072 单词数,set,strtok