1.在使用mp[key]的时候它会去找键值为key的项,如果没有,他会自动添加一个key的项,再把value赋值为相应的初始值(value是int的话赋值为0,string的话赋值为空)。所以如果是插入的话可以用insert,如果是查找的话可以使用find,这样可以节省开销。查找的时间复杂度为O(logn)
2.
代码:
#include<iostream> #include<string> #include<map> using namespace std; string word[50005]; map<string,int> mp;//用平衡二叉树实现的,按key从小到大排 int main() { int i=0; //printf("%d\n",k.max_size());用来看容器的容量 while(cin>>word[i++])//用ctrl+z然后enter结束循环 { mp[word[i-1]]=1;//mp[]中的[]已重载,注意是i-1啊啊!!!!!! } map<string,int>::iterator it; for(it=mp.begin(); it!=mp.end(); it++) { string w=it->first; for(i=1; i<w.length()-1; i++) { string w1(w,0,i);//复制[0,i) string w2(w,i);//从w的i位置开始复制 if(mp.find(w1)!=mp.end()&&mp.find(w2)!=mp.end()) { cout<<w<<endl; break; } } } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
hdu 1247 Hat’s Words(从给的单词中找hat's word 并按字典序输出)
时间: 2024-09-29 03:49:09