Algorithm 要从字符串中删除的字母数,以便可以被另一个字符串整除
我正在做这个问题 我们得到两个字符串S和T。 如果存在满足方程S=k*T的非负整数k,则S可被字符串T整除 应该从S中删除的最小字符数是多少,以便S可以被T整除 其主要思想是使用指针将T与S匹配,并在完成计数时计算T在S中出现的实例数,将指针指向T的开头,如果不匹配,则将T的第一个字母与S的当前字母进行比较 这段代码在他们提供的测试用例和我提供的自定义测试用例中工作得非常好,但它无法通过隐藏的测试用例 这是密码Algorithm 要从字符串中删除的字母数,以便可以被另一个字符串整除,algorithm,greedy,Algorithm,Greedy,我正在做这个问题 我们得到两个字符串S和T。 如果存在满足方程S=k*T的非负整数k,则S可被字符串T整除 应该从S中删除的最小字符数是多少,以便S可以被T整除 其主要思想是使用指针将T与S匹配,并在完成计数时计算T在S中出现的实例数,将指针指向T的开头,如果不匹配,则将T的第一个字母与S的当前字母进行比较 这段代码在他们提供的测试用例和我提供的自定义测试用例中工作得非常好,但它无法通过隐藏的测试用例 这是密码 def无字母(string1、string2): #打印(len(string1),
def无字母(string1、string2):
#打印(len(string1),len(string2))
计数=0
指针=0
如果len(string1)我相信这个解决方案比你所做的要简单得多。您只是想知道T
的字符按顺序出现在S
中的次数。其他一切都是您删除的字符。例如,考虑到RobertBaron的s=“akbaabka”
和T=“aka”
,您可以编写例程,从s
开始按顺序查找字符a
、k
、a
:
akbaabka
ak a^
# with some pointer, ptr, now at position 4, marked with a caret above
完成此操作后,现在可以在字符串的其余部分重复出现:
find_chars(S[ptr:], T)
每次调用时,您都会在S
中查找T
;如果您找到它,请计算1次重复,然后在剩余的S
上重复;如果不是,则返回0(基本情况)。当您爬回递归堆栈时,累加所有1
计数,这就是您的k
值
要清除的炭量为len(s)-k*len(T)
你能从这里开始吗?我相信解决方案比你提出的要简单得多。您只是想知道T
的字符按顺序出现在S
中的次数。其他一切都是您删除的字符。例如,考虑到RobertBaron的s=“akbaabka”
和T=“aka”
,您可以编写例程,从s
开始按顺序查找字符a
、k
、a
:
akbaabka
ak a^
# with some pointer, ptr, now at position 4, marked with a caret above
完成此操作后,现在可以在字符串的其余部分重复出现:
find_chars(S[ptr:], T)
每次调用时,您都会在S
中查找T
;如果您找到它,请计算1次重复,然后在剩余的S
上重复;如果不是,则返回0(基本情况)。当您爬回递归堆栈时,累加所有1
计数,这就是您的k
值
要清除的炭量为len(s)-k*len(T)
你能从这里开始吗?你有没有考虑过S可以是带有T='aka'的'akbaabka'?需要删除b以使s可被“aka”整除。隐藏的情况可能是这样的。由于您选择使用通用变量名、冗余表达式和无注释进行编码,因此很难提取您认为正在实现的算法。您是否考虑过s可能是带有T='aka'的'akbaabka'?需要删除b以使s可被“aka”整除。隐藏的情况可能是这样的。由于您选择使用通用变量名、冗余表达式和无注释进行编码,因此很难提取您认为正在实现的算法。