2011-11-01 93 views
1

我需要實現lastSeq功能,它可以獲取作爲參數string strchar chr 和返回重複chr的最後序列的長度,例如(該序列可以是任意長度的) 中: lastSeq("abbaabbbbacd",'a')應該返回1
lastSeq("abbaabbbbacd",'b')應該返回4 lastSeq("abbaabbbbacd",'t')應返回0長度子序列的串

有C++函數,它能解決呢?

+1

好的。你的問題是什麼?你有什麼嘗試? – Mat

+0

對此沒有直接的功能,你將不得不使用字符串可用的各種查找函數來實現算法。查看'std :: string'或者C字符串函數的一個很好的參考。 – Nim

回答

1
int lastSeq(char *str, char chr) 
{ 
    int i = strlen(str); 
    int l = 0; 

    while(--i>=0) 
     if(*(str + i) == chr && ++l) 
      break; 

    while(--i>=0 && chr == *(str + i) && ++l); 

    return l; 
} 
6

這似乎是家庭作業,所以我只是給你指示,讓你可以自己找到答案。

首先,您將如何自己做,而無需計算機爲您的樣品提供正確的結果。從這些手動運行中,您將如何簡單地進行概括,以便您可以解決所有不同輸入的問題。

到此爲止,您應該有一個粗略的算法來解決這個問題。你對C++中存儲字符串有什麼瞭解,以及該類可用的方法?有人可以用它來解決算法的一些步驟嗎?

嘗試使用這些函數編寫程序,編譯它並運行它。你有預期的結果嗎?如果沒有,您可以嘗試打印中間狀態(使用std::cout << "Some value: " << variable << "\n";)嘗試調試它。

完成所有這些操作後,如果仍然存在問題,請使用您的代碼更新您的問題,我們將能夠爲您提供更直接的幫助。