计算以字符A' A'开头的子字符串。最后是字符' X'

时间:2014-01-25 10:27:56

标签: string substring counting

PYTHON QN: 仅使用一个循环,如何设计一个算法,该算法计算以字符A开头并以字符X结尾的子串数?例如,给定输入字符串CAXAAYXZA,有四个以A开头并以X结尾的子字符串,即:AXAXAAYX,{{1 }和AAYX

例如:

AYX

3 个答案:

答案 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']