最近在应聘各互联网大厂的暑期实习笔试中,发现在字符串这类题目中,有好几个厂的试题都有【无限重复循环的字符串流】此类功能环节的出现,目标处理字符串也都是经过【无限重复循环的字符串流】产生。有很大的相似性,所以想总结归纳出来。我选了两家大厂的面试题来作为例子,用两种方法来实现。
某T
题目部分描述(【无限重复循环的字符串流】):一设备可以预置一串字符,该串字符仅由小写字母构成,但是该设备会不断循环提供该字符串的排列,例如 预先设定的字符串为: abcdefgh…xyz 那么该设备会提供用不为空的字符串流:abcdefgh…xyzabcdefgh…xyzabc…,用该设备生成一个长为 n 的字符串。
实现
将 预置字符串 定义为 originalStr
采用 hashTable(placeHash
) 对 originalStr
的每个字符进行索引:
为什么这里要对每个字符进行索引呢,这是因为目标字符串会用到,具体问题具体对待。
某D
题目部分描述(【无限重复循环的字符串流】):给出一个预置字符串 'aaabc'
,无限不断的重复循环该结构,生成一个无限长的字符串:'aaabcaabcaaabc....'
中间会利用该无限长的字符串,生成一个长度 为 n
的连续子串T 如:’aaabcaaab
‘
实现
拿 预置字符串的长度和 T 字符串的长度 进行取模运算,看看 T
字符串包含了多少个 intger
整的 tar
,余数即为 tar
的部分,然后对这两部分进行拼接,返回 T
你 的 实现代码 显示有问题,一行一个字符是怎么回事??