String 具有给定约束的子字符串数
我得到一个排序字符串,我希望计算子字符串(不一定是连续的)的数量,这些子字符串可能具有以下约束:String 具有给定约束的子字符串数,string,algorithm,String,Algorithm,我得到一个排序字符串,我希望计算子字符串(不一定是连续的)的数量,这些子字符串可能具有以下约束: 子字符串中的所有字母表应按顺序排序 子字符串只能包含1个元音 子字符串的长度应大于或等于3 例如: 对于“aabbc”, 我们有3个子字符串“abc”、“abb”、“abbc”,它们与上述约束匹配 我如何处理一般字符串 我已经试了2-3个小时,但找不到合适的方法。我在今天的一轮编程中被问到这个问题,我担心明天的面试中也会问同样的问题。即使是提示或方法也会受到欢迎。假设我们有k个元音,并且有一个数组A
我已经试了2-3个小时,但找不到合适的方法。我在今天的一轮编程中被问到这个问题,我担心明天的面试中也会问同样的问题。即使是提示或方法也会受到欢迎。假设我们有k个元音,并且有一个数组A指定每个非元音的直方图。(即,
A[0]
是第一个非元音的数字,A[1]
是第二个非元音的数字。)
然后(忽略长度限制)我们对元音有k个选择,对其余字母有(A[0]+1)*(A[1]+1)*(A[2]+1)*……
选择(对于每个非元音,我们可以有0,1,2,…,A[i]
选择)
对于单字母的情况,这会多计k,对于双字母的情况,这会多计k*len(A),所以只需从总数中减去这些
Python代码示例:
from collections import Counter
s='aabbc'
vowels = 'aeiou'
C = Counter(s)
t = 1
vowel_count = 0
cons_count = 0
for letter,count in C.items():
if letter in vowels:
vowel_count += 1
else:
cons_count += 1
t *= count+1
print vowel_count * (t - cons_count - 1)
假设我们有k个元音,一个数组指定每个非元音的直方图。(即,
A[0]
是第一个非元音的数字,A[1]
是第二个非元音的数字。)
然后(忽略长度限制)我们对元音有k个选择,对其余字母有(A[0]+1)*(A[1]+1)*(A[2]+1)*……
选择(对于每个非元音,我们可以有0,1,2,…,A[i]
选择)
对于单字母的情况,这会多计k,对于双字母的情况,这会多计k*len(A),所以只需从总数中减去这些
Python代码示例:
from collections import Counter
s='aabbc'
vowels = 'aeiou'
C = Counter(s)
t = 1
vowel_count = 0
cons_count = 0
for letter,count in C.items():
if letter in vowels:
vowel_count += 1
else:
cons_count += 1
t *= count+1
print vowel_count * (t - cons_count - 1)
@tobias_k未指定任何约束!输入字符串是否总是按顺序排序?@peterdererivaz不一定!但你总是可以排序的!好的,我会编辑这个问题,让它更具可读性!啊,所以您不必选择子字符串,甚至子序列,但可以自由地重新排列所选字符。这是正确的吗?@tobias_k没有指定这样的约束!输入字符串是否总是按顺序排序?@peterdererivaz不一定!但你总是可以排序的!好的,我会编辑这个问题,让它更具可读性!啊,所以您不必选择子字符串,甚至子序列,但可以自由地重新排列所选字符。这是正确的吗?