字符串处理专题,很早就写好了然而忘记写blog了

1035

题意:给你一些单词作为字典。然后让你查找一些单词。对于每个单词,如果在字典中就输出它。否则输出所有它通过删除||增加||替换一个字符能得到的单词

由于数据范围很小,所以我们直接暴力跑一下即可

CODE

#include<string>
#include<iostream>
#include<map>
using namespace std;
const int N=10005;
map <string,bool> hash;
string s[N],t;
int n,m;
inline void swap(string &a,string &b)
{
string temp=a; a=b; b=temp;
}
inline bool cmp(string a,string b)
{
int len_a=a.size(),len_b=b.size();
if (len_a<len_b) swap(a,b),len_a=a.size(),len_b=b.size();
if (len_a-len_b>1) return 0;
if (len_a^len_b)
{
for (register int i=0;i<len_a;++i)
{
string temp=a;
temp.erase(i,1);
if (temp==b) return 1;
}
return 0;
} else
{
int tot=0;
for (register int i=0;i<len_a;++i)
{
if (tot>1) return 0;
if (a[i]^b[i]) ++tot;
}
return tot<=1;
}
}
int main()
{
register int i;
std::ios::sync_with_stdio(false);
//freopen("CODE.in","r",stdin); freopen("CODE.out","w",stdout);
while (cin>>s[++n],s[n]!="#")
hash[s[n]]=1; --n;
while (cin>>t,t!="#")
{
if (hash[t]) cout<<t<<" is correct"<<endl; else
{
cout<<t<<":";
for (i=1;i<=n;++i)
if (cmp(s[i],t)) cout<<" "<<s[i];
cout<<endl;
}
}
return 0;
}

3080

题意是给你一些字符串,让你找它们的最长公共字串

同样因为范围很小,所以只需要枚举+find即可

CODE

#include<iostream>
#include<string>
using namespace std;
string s[15],ans;
int n,m,len,tot;
int main()
{
register int i,j,k;
ios::sync_with_stdio(false);
cin>>n;
while(n--)
{
cin>>m; tot=0; ans="";
for (i=1;i<=m;++i)
cin>>s[i]; len=s[1].size();
for (i=0;i<len;++i)
for (j=len-1;j>=i+tot-1;--j)
{
string temp(s[1],i,j-i+1);
bool flag=1;
for (k=2;k<=m;++k)
if (s[k].find(temp)==string::npos) { flag=0; break; }
if (flag)
{
if (temp.size()>tot) tot=temp.size(),ans=temp; else
if (temp.size()==tot&&temp<=ans) ans=temp;
}
}
if (ans.size()<3) cout<<"no significant commonalities"<<endl; else cout<<ans<<endl;
}
return 0;
}

1936

题意:对于两个字符串,判断s1是否为s2的一个子序列

注意这里是子序列,所以不能上find,手动模拟一个一个查找即可

CODE

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char s1[100005],s2[100005];
int len1,len2,p;
int main()
{
register int i;
while (scanf("%s%s",&s1,&s2)!=EOF)
{
len1=strlen(s1); len2=strlen(s2); p=0;
bool flag=1;
for (i=0;i<len1;++i)
{
while (s2[p]!=s1[i]&&p<len2) ++p; ++p;
if (p>len2) { flag=0; break; }
}
puts(flag?"Yes":"No");
}
return 0;
}

POJ1035&&POJ3080&&POJ1936的更多相关文章

  1. poj分类 很好很有层次感。

    初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      ( ...

  2. 【转】POJ题目分类推荐 (很好很有层次感)

    OJ上的一些水题(可用来练手和增加自信) (poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094)初期: 一. ...

  3. 【转】ACM训练计划

    [转] POJ推荐50题以及ACM训练方案 -- : 转载自 wade_wang 最终编辑 000lzl POJ 推荐50题 第一类 动态规划(至少6题, 和 必做) 和 (可贪心) (稍难) 第二类 ...

  4. POJ 题目分类(转载)

    Log 2016-3-21 网上找的POJ分类,来源已经不清楚了.百度能百度到一大把.贴一份在博客上,鞭策自己刷题,不能偷懒!! 初期: 一.基本算法: (1)枚举. (poj1753,poj2965 ...

  5. (转)POJ题目分类

    初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.     (4)递推. ...

  6. acm常见算法及例题

    转自:http://blog.csdn.net/hengjie2009/article/details/7540135 acm常见算法及例题  初期:一.基本算法:     (1)枚举. (poj17 ...

  7. poj分类

    初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      ( ...

  8. 转载 ACM训练计划

    leetcode代码 利用堆栈:http://oj.leetcode.com/problems/evaluate-reverse-polish-notation/http://oj.leetcode. ...

  9. ACM算法总结及刷题参考

    参考:http://bbs.byr.cn/#!article/ACM_ICPC/11777 OJ上的一些水题(可用来练手和增加自信)(poj3299,poj2159,poj2739,poj1083,p ...

随机推荐

  1. 安卓socket聊天

    安卓基于Socket通信(服务器配合) 1.话不多说进入正题,先创建服务端,在Android Studio中创建Java代码,如下图所示: 选择Java Library 需要改名字的自己随意 2.创建 ...

  2. 在Windows上安装Gradle

    1.开发环境 (1)Java:JDK8(必须是JDK或JRE7以上,使用java -version查看当前电脑java版本) (2)操作系统:Windows 7 2.安装步骤 (1)下载最新的Grad ...

  3. HDFS Lease Recovey 和 Block Recovery

    这篇分析一下Lease Recovery 和 Block Recovery hdfs支持hflush后,需要保证hflush的数据被读到,datanode重启不能简单的丢弃文件的最后一个block,而 ...

  4. 如何将SQL Server 2000备份的数据库文件还原(升级)为SQL Server 2005或更高版本的数据库?

    其实很简单,有两种方法. 方法一:将SQL Sever 2000数据库备份的数据库文件名后面加上“.bak”,然后直接在SQL Sever 2005或者高版本软件里面直接还原即可: 方法二:在SQL ...

  5. python之demo2----改编自python官方提供的turtle_yinyang.py画阴阳的demo

    """ 执行 python -m turtledemo 命令查看系统内置demo的源码 绘制:需要通过import turtle引入绘制图形库turtle库 改编自pyt ...

  6. python_距离测量

    之所以写这个,其实就是希望能对距离有一些概念,当然这个也是很基础的,不过千里之行始于足下嘛,各种路径算法,比如a*什么的都会用到这个 距离测量有三种方式 1.欧式距离,这个是最常用的距离测量方式 (( ...

  7. MySQL基础之 LIKE操作符

    LIKE操作符 作用:用于在WHERE子句中搜索列中的指定模式. 语法:SELECT  COLUMN_NAME  FROM  TABLE_NAME  WHERE  COLUMN_NAME  LIKE ...

  8. skimage 安装和子模块

    平台:Windows 10 1.安装anaconda anaconda是python环境的集成安装软件,建议安装2.7版本的python 2.安装skimage 打开windows的命令提示符:  输 ...

  9. [Eclipse]在重命令文件名时,提示编码格式有问题导致修改失败,需要设置如下几个默认编码为UTF-8

    需要设置的几处地方为: 1.Window->Preferences->General ->Content Type->Text->JSP 最下面设置为UTF-8 2. W ...

  10. div设置contenteditable="true" 光标消失:原因

    原因1:document.onselectstart= function(){return false;}; 原因2:父层设置了user-select:none 导致 子层设置了 contentedi ...