簡體   English   中英

2D Char 數組對角線從某個索引向后推?

[英]2D Char array diagonal push back from a certain index?

我需要創建一個 function ,它需要一個二維字符矩陣和一個字符串作為參數,問題是,我需要推回所有對角字符集合,它們與字符串參數的字符相同,長度與字符串相同參數,例如,如果矩陣是:

S L A R O Q M S K
L T M A K I T T E
P O A L K Q H M C
K L A C O P L I K
W R Y U K S A X Z
P Q K I O O H J L

並且字符串參數是“STACK”,我需要在一維臨時字符向量中推回“{S,T,A,C,K}”,如您在第一個左上角 - 右下角對角線上看到的那樣。

到目前為止,我創建了這樣的東西:

string matrixToString(vector<vector<char>> & mat, string searchWord) {
string s = "";
vector<char> temp;
char ch = searchWord[0];
for (unsigned int i = 0; i < mat.size(); i++) {
    for (unsigned int j = 0; j < mat[0].size(); j++) {
        for (unsigned int m = ch, n = ch; m < searchWord.length() && n < searchWord.length(); i++, j++) {
            temp.push_back(mat[m][n]);
        }
    }
}
s = charToString(temp);

return s;

}

樣本輸入為:

SEARCH
DAPIJY
QTVAMK
NRAELQ
LGIFTZ
///
SAVE

我的向量中沒有任何內容被推送,但預期的是:{S,A,V,E}

這段代碼有什么問題,我該如何實現這樣的 function? 謝謝您的幫助。

一個錯誤的事情是unsigned int m = ch, n = ch ch不是源字符串中的 position 而是一個字符 [code],因此將其分配給計數器是沒有意義的。

另一個問題(更像是一個錯字)是在內部循環中增加ij (並且根本不接觸mn所以循環將是無限的,最初m不會那么大)。

該內部循環的一種可能實現實際上會遍歷searchWord並將其第 (k) 個字符與矩陣的第 (i+k,j+k) 個字符進行比較(但要注意矩陣邊界)。 僅當所有比較成功時,您才需要記錄字符串,或者可能立即返回它(除非您需要返回位置,否則您可以在此處返回searchWord ,因為您剛剛檢查它是否等於您需要返回的內容)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM