2014-01-25 49 views
1

PYTHON QN: 僅使用一個循環,如何設計算法來計算以字符A開頭並以字符X ?例如,給定輸入字符串CAXAAYXZA,有四個子字符串以A開頭並以X結束,即:AX,AXAAYX,AAYXAYX計數以字符'A'開始並以字符'X'結尾的子字符串

例如:

>>>count_substring('CAXAAYXZA') 
4 
+0

這個問題有什麼問題? –

+0

可能是一個意外編輯;請求恢復到之前的修訂版本。 – waTeim

回答

1

字符串 在 「A」 的第一計數數目然後,使用

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「作爲結束位置並獲取子字符串。對每個「X」執行此操作,然後從第二個「A」開始並對「X」計數次執行該操作。重複此操作,您將獲得以「A」開始並以「X」結尾的所有子字符串。

+1

這聽起來不像是單循環算法。 – user2357112

+0

我正在使用python – user3234828

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 
+0

我正在使用python – user3234828

+0

LoL!更新... – waTeim

+0

非常感謝幫助 – user3234828

0

只是另一種解決方案在蟒蛇:

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'] 
+0

我可以在代碼中看到2個循環:( – gonephishing

相關問題