本帖最后由 新手路上 于 2019-7-25 15:25 编辑
首先表明我是一个一天不嘚瑟(qian xu)就呼吸苦难的人,我尤其喜欢在各位前辈面前嘚瑟,当然被打脸是经常发生的事情,当初我写这个标题的时候我内心是拒绝的,但是我摸摸我那厚厚的脸皮后就决定不管那么多了,谁都知道的我也放上来了哈。O(∩_∩)O哈哈~
很多人不是特别知道substitute用空格放大的时候该放多大,其实原理也是非常简单的,真的非常简单。
现有n个字符串记为a1,a2,a3……an,(n>1)每个字符串的长度记为len(a1),len(a2),……len(an)。假设每个字符串之间用一个符号§进行连接成为一个新的字符串A,现用x(正整数)个空格来进行替换§,使得在A中的第x-(x-1),2x-(x-1),3x-(x-1)……nx-(x-1),即第1,x+1,2x+1……nx-x+1位处取x个字符仅包含对应字符串a1,a2,a3……an及空格,且应满足len(a1)+len(a2)+……len(an)+nx-x<32768,试问,x的取值范围。 现证明:当len(a1)+len(a2)+……len(an) -1 < x时即可满足条件。 当n=2时明显应有x>len(a1)-1且2x>len(a1)+len(a2)+x-1,取交集即x>len(a1)+len(a2)-1。 当n=3时应有x>len(a1)-1且2x>len(a1)+len(a2)+x-1且3x>len(a1)+len(a2)+len(a3)+2x-1,取交集即x>len(a1)+len(a2)+len(a3)-1。 ……………………………………………………… ……………………………………………………… ……………………………………………………… 故当n=n时也应有x>len(a1)-1且2x>len(a1)+len(a2)+x-1且3x>len(a1)+len(a2)+len(a3)+2x-1……且nx>len(a1)+len(a1)+len(a2)+……len(an)+nx-x-1,即x>len(a1)+len(a2)+……len(an)-1。 当且仅当RIGHT(B,LEN(an))=an时应有x=len(a1)+len(a2)+……len(an),其中B为在字符串A的第nx-x+1位处取x个字符所形成的字符串。故有len(a1)+len(a2)+……len(an) -1 < x。 所以在实际应用中如何求x??直接用空替换出连接符然后len一下即可得出x,很多人说往大取不是可以吗?当然可以,但是我喜欢刚刚好~~~~(*^▽^*)
|