iBug最近获得了由复合材料但有价值的材料制成的长条。该栏太长了,以至于iBug不能轻易将其出售以换取积分,因此他想削减它。杆由易碎的魔术材料制成,如果零件断裂,则由相同材料制成的杆的所有部分也会断裂,从而难以任意切割。
iBug希望将标尺切成尽可能多的片段。他还喜欢很短的程序和代码编程,因此对他的问题进行了抽象分析。
iBug的魔力棒表示为字符串(或者,如果愿意,可以表示为数组或字符序列),如下所示:
aaabbccccccbbbaaacccccaabbbaaaaa
字符串中的每个字母代表一种魔术材料。该条始终与RegEx相匹配^\w*$
,因此条中最多可以包含63种材料。“部分”是由空格分隔的任何字符的连续序列。
iBug希望您编写一个程序,如果完全删除了零个或多个字符集(用空格代替),则可以计算出他可以得到的最大部分,并告诉iBug该数字。
范例1:
In: aaabbccccccbbbaaacccccaabbbaaaaa
Out: 4
说明:如果b
将其从工具栏中完全卸下,则iBug可以分为4个部分。他还可以通过删除b
和来获得4个部分c
,如下所示
aaabbccccccbbbaaacccccaabbbaaaaa # Original string
aaa cccccc aaacccccaa aaaaa # Remove 'b'
aaa aaa aa aaaaa # Remove 'b' and 'c'
这就是iBug可以从该栏获得的最大零件数
范例2:
In: 111aa___9999____aaa99111__11_a_aa999
Result: 111aa 9999 aaa99111 11 a aa999
Out: 6
说明:通过仅删除下划线,iBug可以从条中获得6个部分,这是最大数目。
范例3:
In: __________
Out: 1
说明:什么?你想剪这个吗?如果根本不切割,则只能得到1个零件。
范例4:
In:
Out: 0
说明:没有要削减的内容,因此为零。
iBug还希望程序遵守一些规则:
iBug不喜欢标准漏洞,因此被禁止。
只要有效,就不必是完整程序。也接受从参数获取输入并通过返回值提供输出的函数。
允许灵活的输入和输出。您的程序或函数可以采用字符串或字符数组,也可以采用最简单的处理方法。您可以通过打印数字或返回数字来提供输出。
样本测试用例(但不限于这些)
aaabbbaaa = 2
123456789 = 5
AaAaAaAa = 4
aaabcccdedaaabefda = 6
________ = 1
(empty) = 0
由于这是一个代码高尔夫,因此每种语言中最短的程序(以字节为单位)将获胜!
额外
iBug非常感谢您能为您的程序提供解释,即使它不会影响评分(仍然是字节长度)。
2468
,对于第二个,删除bd
。
2,4,6,8
从第一个和b,d,f
第二个中删除。
123456789
产生5?以及如何aaabcccdedaaabefda
产生6?对于这两个测试用例,我分别得到2和4。