【发布时间】:2019-03-20 18:10:05
【问题描述】:
给你一个字符串 S,你必须找到 S 的所有惊人子串。
Amazing Substring 是以元音 (a, e, i, o, u, A, E, I, O, U) 开头的字符串。
输入
给出的唯一参数是字符串 S。
输出
返回一个整数 X mod 10003,这里 X 是给定字符串中惊人子字符串的数量。
约束
- 1
- S 可以有特殊字符
示例
Input
ABEC
Output
6
Explanation
Amazing substrings of given string are :
1. A
2. AB
3. ABE
4. ABEC
5. E
6. EC
here number of substrings are 6 and 6 % 10003 = 6.
我已经针对上述问题实现了以下算法。
class Solution:
# @param A : string
# @return an integer
def solve(self, A):
x = ['a', 'e','i','o', 'u', 'A', 'E', 'I', 'O', 'U']
y = []
z = len(A)
for i in A:
if i in x:
n = A.index(i)
m = z
while m > n:
y.append(A[n:m])
m -= 1
if y:
return len(y)%10003
else:
return 0
上述解决方案适用于正常长度的字符串,但不适用于更长的长度。
例如,
A = "pGpEusuCSWEaPOJmamlFAnIBgAJGtcJaMPFTLfUfkQKXeymydQsdWCTyEFjFgbSmknAmKYFHopWceEyCSumTyAFwhrLqQXbWnXSn"
算法输出 1630 个子数组,但预期的答案是 1244。
请帮助我改进上述算法。感谢您的帮助
【问题讨论】:
标签: python arrays string algorithm