PYTHON QN:
仅使用一个循环,如何设计一个算法,该算法计算以字符A
开头并以字符X
结尾的子串数?例如,给定输入字符串CAXAAYXZA
,有四个以A
开头并以X
结尾的子字符串,即:AX
,AXAAYX
,{{1 }和AAYX
。
例如:
AYX
答案 0 :(得分:4)
由于你没有指定语言,我正在做c ++ ish
int count_substring(string s)
{
int inc = 0;
int substring_count = 0;
for(int i = 0;i < s.length();i++)
{
if(s[i] == 'A') inc++;
if(s[i] == 'X') substring_count += inc;
}
return substring_count;
}
和Python
def count_substring(s):
inc = 0
substring_count = 0
for c in s:
if(c == 'A'): inc = inc + 1
if(c == 'X'): substring_count = substring_count + inc
return substring_count
答案 1 :(得分:1)
字符串中的第一个计数“A” 然后在字符串中计算“X”
使用
Public Function CountCharacter(ByVal value As String, ByVal ch As Char) As Integer
Dim cnt As Integer = 0
For Each c As Char In value
If c = ch Then cnt += 1
Next
Return cnt
End Function
然后将每个“A”作为起始位置,将“X”作为结束位置并获取子串。对每个“X”执行此操作,然后从第二个“A”开始,并运行“X”计数次。重复此操作,您将获得所有以“A”开头并以“X”结尾的子串。
答案 2 :(得分:0)
另一个解决方案在python中:
def count_substring(str):
length = len(str) + 1
found = []
for i in xrange(0, length):
for j in xrange(i+1, length):
if str[i] == 'A' and str[j-1] == 'X':
found.append(str[i:j])
return found
string = 'CAXAAYXZA'
print count_substring(string)
输出:
['AX', 'AXAAYX', 'AAYX', 'AYX']