OpenJudge百炼-2744-子串-C语言-字符串处理
来源:互联网 发布:短信阿里云授权服务 编辑:程序博客网 时间:2024/05/07 22:41
描述:
现在有一些由英文字符组成的大小写敏感的字符串,你的任务是找到一个最长的字符串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
/*******************************************************文件名:百炼-2744**Copyright (c) 201-2025 OrdinaryCrazy**创建人:OrdinaryCrazy**日期:20170810**描述:百炼2744参考答案**版本:1.0******************************************************/#include <stdio.h>#include <string.h>/*****************************************************作为整个字符串组的公共子串,最低要求它应该是最短的字符串的子串则对最短字符串的子串由长到短依次检验,直到找到符合要求的长度为止******************************************************/char str[100][101];int n,min,minl;void strrevf(char* a){ char* l = a; char* r = a; while(*r) r++; r --; char tmp; while(r > l) { tmp = *r; *r = *l; *l = tmp; r--; l++; }}/********************************************************函数名:solve**输出:字符串组最长子串长度**功能:计算字符串组最长子串长度**作者:OrdinaryCrazy**日期:20170810**版本:1.0*******************************************************/int solve(){ int res = minl,i,j,found; char substr[101],revsubstr[101]; while(res) { for(i = 0;i <= minl - res;i++)//对长为res的子串依次检验 { strncpy(substr,&str[min][i],res); strcpy(revsubstr,substr); substr[res] = revsubstr[res] = '\0'; strrevf(revsubstr); found = 1; for(j = 0;j < n;j++) if(strstr(str[j],substr)==NULL && strstr(str[j],revsubstr)==NULL) { found = 0; break; } if(found) return res; } res--; } return 0;}int main(){ int t,i; scanf("%d",&t); while(t--) { scanf("%d",&n); min = 0; minl = 1000; for(i = 0;i < n;i++) { scanf("%s",str[i]); if(strlen(str[i]) < minl) { min = i; minl = strlen(str[i]); } } printf("%d\n",solve()); } return 0;}
阅读全文
0 0
- OpenJudge百炼-2744-子串-C语言-字符串处理
- OpenJudge百炼-2974-487-3279-C语言-字符串处理
- OpenJudge百炼-2820-古代密码-C语言-字符串处理
- OpenJudge百炼-2799-浮点数格式-C语言-字符串处理
- OpenJudge百炼-2819-W的密码-C语言-字符串处理
- OpenJudge百炼-1936-全在其中-C语言-字符串处理
- OpenJudge百炼-2712-细菌繁殖-C语言-日期处理
- OpenJudge百炼-2964-日历问题-C语言-日期处理
- OpenJudge百炼-2965-玛雅历-C语言-日期处理
- OpenJudge百炼-2966-时区转换-C语言-日期处理
- OpenJudge百炼-2967-特殊日历计算-C语言-日期处理
- OpenJudge百炼-2950-摘花生-C语言
- OpenJudge百炼-2745-显示器-C语言-模拟
- OpenJudge百炼-1833-排列-C语言-模拟
- OpenJudge百炼-2706-麦森数-C语言-高精度计算
- OpenJudge百炼-2692-假币问题-C语言-枚举
- OpenJudge百炼-2811-熄灯问题-C语言-枚举
- OpenJudge百炼-2785-武林-C语言-模拟
- 显示设备的相关API :EnumDisplayDevices 和EnumDisplaySettings这两个方法没有怎么用过,以后研究以下
- RedisTemplate 不能按类型装配注入
- R语言实现聚类算法
- EditText防止输入空格
- android图片选择及获取处理相关资料链接
- OpenJudge百炼-2744-子串-C语言-字符串处理
- 再识Java泛型
- 2:正常血压(程序设计与算法(一)第四周测验(2017夏季)
- 进程控制3——进程终止和等待
- scala中的map和tuple
- Semaphore的简单理解
- 低版本的Xcode如何连接高版本的真机进行调试
- Android Studio编绎流程
- 对线性回归、逻辑回归、各种回归的概念学习