SDNUOJ1099前缀判断(set)
2017-11-12 16:54
274 查看
SDNU_ICPC1099
题意:给定 n 个字符串,求有多少字符串是其他字符串的前缀。1 <= n <= 1000,每行一个字符串,字符串只由26个小写字母组成,最大长度为100。
注意两个相同的字符串互为前缀
(一)用set做的版本
思路:
定义一个字符串类型的数组(不知道这样用好不好Ծ‸Ծ)然后把每一串字符串的前缀们写出来放到一个容器里若输入的字符串里有这个容器中的元素那么他就是前缀
代码
题意:给定 n 个字符串,求有多少字符串是其他字符串的前缀。1 <= n <= 1000,每行一个字符串,字符串只由26个小写字母组成,最大长度为100。
注意两个相同的字符串互为前缀
(一)用set做的版本
思路:
定义一个字符串类型的数组(不知道这样用好不好Ծ‸Ծ)然后把每一串字符串的前缀们写出来放到一个容器里若输入的字符串里有这个容器中的元素那么他就是前缀
代码
#include<cstdio> #include<set> #include<cstring> #include<iostream> using namespace std; int main() { int n,sum=0; string x; string s[1200]; cin>>n; set<string> se;//定义一个容器用来装前缀 set<string> all;//装所有输入的字符串 set<string> cop;//这个是之前出现过的装一下 for(int i=0;i<n;i++)//跑个循环输入所有字符串并且都装到all容器里 { cin>>s[i]; if(all.count(s[i])!=0)//输入字符串已经出现过 cop.insert(s[i]);//就把它存到cop里 all.insert(s[i]);//把输入的字符串存到容器里 for(int j=1;j<s[i].length();j++)//跑个循环存一下每个字符串的所有前缀 { x=s[i].substr(0,j);//截取 se.insert(x);然后把截取部分搁到容器里 } } for(int i=0;i<n;i++) { if(se.count(s[i])!=0)sum+=1;//如果字符串在前缀容器里那么他就是其他字符串的前缀,就加一 else if(cop.count(s[i]))sum+=1;//如果不是并且是重复出现的那么他也是前缀,也加一 } cout<<sum<<endl; return 0; } 这个真的要考虑全面...刚开始忘了去重,然后又搞多了,在前面判断重了就直接给sum加一了,忘了后面还有可能重复加上他emmmmm所以要把重了的先屯起来到下面跟前缀们一起判断 (二)未完待续,还有一个代码没搞出来......
相关文章推荐
- sdnu 1099 前缀判断
- sdnu1099.前缀判断
- sdnu oj 1099 前缀判断
- s:set 和 s:date 使用, 在jsp判断日期
- NSString基础2-判断前缀、后缀、分割、截取、拼接、查询
- 怎样判断set集合元素是否可以重复存取
- List、Set、Map判断两个对象相等的标准
- js,onblur后下一个控件获取焦点判断、html当前活跃控件、jquery版本查看、jquery查看浏览器版本、setTimeout&setInterval
- 蓝桥杯四题5前缀判断指针填空题
- Java中的Set接口,了解如何判断是否重复元素。
- 前缀判断 - 蓝桥杯
- FIND_IN_SET mysql 关于字符中的判断
- .NET属性值变更时set方法易被忽略的if判断
- 2013 前缀判断
- Python判断值是否在list或set中的性能对比分析
- (hdu step 5.2.3)Phone List(Trie实现:在一堆号码中,判断是否有号码是其他号码的前缀)
- 怎样判断set集合元素是否可以重复存取
- ’alter system set 参数=XX‘命令的本质以及参数文件中SID和*两类前缀名优先级
- 用JavaScript判断CSS浏览器类型前缀的两种方法
- struts2系列十七之常用的struts标签set,property,iterator,include,if,error,判断奇偶