2744:子串
总时间限制: 1000ms 内存限制: 65536kB
描述
现在有一些由英文字符组成的大小写敏感的字符串,你的任务是找到一个最长的字符串x,使得对于已经给出的字符串中的任意一个y,x或者是y的子串,或者x中的字符反序之后得到的新字符串是y的子串。
输入
输入的第一行是一个整数t (1 <= t <= 10),t表示测试数据的数目。对于每一组测试数据,第一行是一个整数n (1 <= n <= 100),表示已经给出n个字符串。接下来n行,每行给出一个长度在1和100之间的字符串。
输出
对于每一组测试数据,输出一行,给出题目中要求的字符串x的长度。
样例输入
2
3
ABCD
BCDFF
BRCD
2
rose
orchid
样例输出
2
2

问题链接:Bailian2744 子串
问题描述:(略)
问题分析
    这是一个字符串处理问题,需要熟悉字符串处理函数的使用。用枚举法进行处理计算。
程序说明:(略)
参考链接:(略)
题记:(略)。

AC的C语言程序如下:

/* Bailian2744 子串 */#include <stdio.h>
#include <string.h>#define N 100
char s[N][N + 1], sub[N + 1], rev[N + 1];void strrev(char s[])
{int i = 0, j = strlen(s) - 1;char c;while(i < j) {c = s[i];s[i] = s[j];s[j] = c;i++;j--;}
}int maxSubString(char t[], int len, int n)
{int sublen, srclen, flag, i, j;sublen = srclen = len;while(sublen > 0) {for(i = 0; i <= srclen - sublen; i++) {strncpy(sub, t + i, sublen);strncpy(rev, t + i, sublen);sub[sublen] = rev[sublen] = '\0';strrev(rev);flag = 1;for(j = 0; j < n; j++) {if(strstr(s[j], sub) == NULL && strstr(s[j], rev) == NULL) {flag = 0;break;}}if(flag)return sublen;}sublen--;}return 0;
}int main(void)
{int t, n, minlen, len, pos, i;scanf("%d", &t);while(t--) {scanf("%d", &n);pos = 0;minlen = N;for(i = 0; i < n; i++) {scanf("%s", s[i]);len = (int)strlen(s[i]);if(len < minlen) {minlen = len;pos = i;}}/* 输出结果 */printf("%d\n", maxSubString(s[pos], minlen, n));}return 0;
}

AC的C语言程序如下:

/* Bailian2744 子串 */#include <stdio.h>
#include <string.h>#define MIN(a, b) (((a) < (b)) ? (a) : (b))#define N 100
char s[N][N + 1], sub[N + 1], rev[N + 1];void strrev(char s[])
{int i = 0, j = strlen(s) - 1;char c;while(i < j) {c = s[i];s[i] = s[j];s[j] = c;i++;j--;}
}int maxSubString(char t[], int n)
{int sublen, srclen, flag, i, j;sublen = srclen = strlen(t);while(sublen > 0) {for(i = 0; i <= srclen - sublen; i++) {strncpy(sub, t + i, sublen);strncpy(rev, t + i, sublen);sub[sublen] = rev[sublen] = '\0';strrev(rev);flag = 1;for(j = 0; j < n; j++) {if(strstr(s[j], sub) == NULL && strstr(s[j], rev) == NULL) {flag = 0;break;}}if(flag)return sublen;}sublen--;}return 0;
}int main(void)
{int t, n, minlen, pos, i;scanf("%d", &t);while(t--) {scanf("%d", &n);minlen = N;for(i = 0; i < n; i++) {scanf("%s", s[i]);minlen = MIN(minlen, (int)strlen(s[i]));}/* 找出最短串位置 */for(i = 0; i < n; i++)if((int)strlen(s[i]) == minlen) {pos = i;break;}/* 输出结果 */printf("%d\n", maxSubString(s[pos], n));}return 0;
}

Bailian2744 子串【字符串】相关推荐

  1. 【BZOJ-13962865】识别子串字符串识别 后缀自动机/后缀树组 + 线段树

    1396: 识别子串 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 312  Solved: 193 [Submit][Status][Discus ...

  2. BZOJ3230 相似子串 字符串 SA ST表

    原文链接http://www.cnblogs.com/zhouzhendong/p/9033092.html 题目传送门 - BZOJ3230 题意 给定字符串$s$.长度为$n$. 现在有$Q$组询 ...

  3. 公共子串 字符串哈希

    You are given two long strings AA and BB. They are comprised of lowercase letters. You should comput ...

  4. 查找子串-字符串查找的简单函数

    本题要求实现一个字符串查找的简单函数. 函数接口定义: char *search( char *s, char *t ); 函数search在字符串s中查找子串t,返回子串t在s中的首地址.若未找到, ...

  5. c语言 替换字符串中的子串,字符串中的子串替换

    在很多编程语言中,都封装了字符串替换的操作,那么我们这里自己用C语言来实现一个字符串替换的函数.具体需求为:Replace(String S,String T,String V),用V替换主串S中出现 ...

  6. php 求子串,字符串的连接与求子串,目测只有高手可以帮我解答了

    已结贴√ 问题点数:10 回复次数:41 字符串的连接与求子串,目测只有高手可以帮我解答了 #include #include #define MAXSIZE 256            //定义串 ...

  7. 字符串中连续出现最多的子串 amp; 字符串中最长反复子串

    字符串中连续出现最多的子串 & 字符串中最长反复子串 字符串中连续出现最多的子串 & 字符串中最长反复子串,这两个问题都能够用后缀数组来表示,至于后缀数组能够參考编程珠玑P156:后缀 ...

  8. python字符串面试题:找出一个字符串中第一个字母和最后一个字符是第一次重复,中间没有重复且最长的子串...

    1.给出任意一个字符串,打印一个最长子串字符串及其长度,如果有相同长度的子字符串,都要一起打印出来,该子字符串满足以下条件, 第一个字母和最后一个字符是第一次重复 这个子字符串的中间字母没有重复 这个 ...

  9. 算法设计 - 寻找一个字符串的重复子串LRS

    虽是读书笔记,但是如转载请注明出处 http://segmentfault.com/blog/exploring/ .. 拒绝伸手复制党 问题描述: 首先这是一个单字符串问题.子字符串 R 在字符串 ...

最新文章

  1. 测试手机硬件参数软件b站,OnePlus 7T评测:什么是硬件优秀,软件有料,它就是...
  2. 创业故事:腾讯的创始人们
  3. 阿里推荐的Redis使用规范,Redis就要这么用
  4. PP 关于工单领料的总结
  5. 简述一下extern C的小作用
  6. Blazor带我重玩前端(五)
  7. 运动基元_Java更快地对基元数组进行排序?
  8. JDK 8中的流驱动的集合功能
  9. 意外收获字节跳动内部资料,一篇文章帮你解答
  10. python 基本类型,运算,循环
  11. 基于python的空域变换
  12. 广发银行大数据管控互联网风险
  13. 如何准备数学建模竞赛?数学建模方法!备战国赛
  14. Adobe Zii Patcher 4.2.1 Adobe 2019 Mac 版通用一键自动化完美补丁(TNT)出品
  15. 微擎支持html微信支付,微信小程序云开发:现已原生支持微信支付
  16. 一个有效的面试——善用STAR法则
  17. | 码教授创始人倾情回馈母校四川大学
  18. 读取jpeg图像数据
  19. esp8266基本使用 - WebServer
  20. 【推荐系统】:Deep Crossing模型解析以及代码实现

热门文章

  1. 使用GDAL对HDF数据进行geoloc校正
  2. 全球11大免费GIS数据源在此,速速来取!
  3. PowerCMD——cmd的命令行工具
  4. python中队列的应用用场景_消息队列使用的四种场景介绍
  5. 【java进阶之路】(并发编程篇)1.Java线程
  6. 猿辅导 android平板,如何为孩子学习提速减压?荣耀平板7携手猿辅导打造优质网课学习体验...
  7. Spark Streaming的介绍和IDEA操作
  8. php 过滤非utf8,PHP如何将不是UTF8的字符过滤掉(代码)
  9. fanuc机器人与示教器配对_看FANUC机器人在重力浇铸行业,都是又累又重的活儿啊!...
  10. 将本地项目上传到github详解