数据结构与算法(二)字符串

1.合格的字符串

描述

     老师给小学生门布置了一些作业,让它们按照一个模版写一些字符串交上来,

同学们把作业交上来了,问题来了,这么多的作业老师批改不过来,现在请你帮老师

写一个程序,帮助老师确定各个字符串是否合格。

    首先老师有一个匹配模版,比如是“aa[123]bb”这一个字符串,同学们交的各种

作业字符串如aa1bb、aa2bb、aa3bb都算是正确匹配看,而aacbb就是错误的字符串。

(即待查字符串对应于模版方括号内的部分,应该为方括号内字符串的一个子字符)。

    我们需要做的就是按照模版,找出正确的字符串和所在的行。

输入

输入的第一行为一个整数n,表示有多少个学生的作业,即有多少行需要检查的字符串。(1<=n<=50)
中间为n行字符串,代表着n个学生们写的作业。每个字符串长度小于50。
最后一行为1行字符串,代表着老师给的匹配模板。

输出

输出合格的字符串的行号和该字符串。(中间以空格隔开)

样例输入

4
Aab
a2B
ab
ABB
a[a2b]b

样例输出

1 Aab
2 a2B
4 ABB

提示

被检测的字符串中只有数字和字母。

 

2.挤奶网格

描述

每天早上奶牛被挤奶的时候,农夫约翰的奶牛会成一个R行,C列的长方形网格(1 <= R <= 10,000,1 <= C <= 75)。据我们所知,约翰i研究奶牛行为上,是一个专家,同时也在编写一个关于如何饲养奶牛的书。他发现如果将每头奶牛用一个大写字母来标识其种类,在挤奶的时候他的奶牛所形成的二维模式似乎有时候是从一些更小的长方形模式重复得来。帮助 寻找最小面积的长方形单位,该长方形单位可以通过重复从而构成整个挤奶网格,注意到这个小的长方形单位的维度并不需要由整个挤奶网格的维度均分得到,具体可以参见示例。

输入

第一行: 两个以空格间隔的整数 R和C
第二行到第R+1行:牛形成的网格,每个格子以一个大写字母来表示每个奶牛的种类。这R行中每行包含C个中间没有间隔符的字母。

输出

一行,即网格形成所需要的最小单位的面积。

样例输入

2 5
ABABA
ABABA

样例输出

2

提示

整个挤奶网格可以从模式 'AB'重复得来。第一行和最后一行的A用模式‘AB’的前缀部分A得到。即求最小覆盖矩阵。

 

3.Seek the name, seek the fame

描述

The little cat is so famous, that many couples tramp over hill and dale to Byteland, and asked the little cat to give names to their newly-born babies. They seek the name, and at the same time seek the fame. In order to escape from such boring job, the innovative little cat works out an easy but fantastic algorithm:

Step1. Connect the father's name and the mother's name, to a new string S.
Step2. Find a proper prefix-suffix string of S (which is not only the prefix, but also the suffix of S).

Example: Father='ala', Mother='la', we have S = 'ala'+'la' = 'alala'. Potential prefix-suffix strings of S are {'a', 'ala', 'alala'}. Given the string S, could you help the little cat to write a program to calculate the length of possible prefix-suffix strings of S? (He might thank you by giving your baby a name:)

输入

The input contains a number of test cases. Each test case occupies a single line that contains the strin

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值