所以在解決 Leetcode 上的問題時,我遇到了這個問題。要正常生成字串,我可以使用 str.push_back('a')。但是如果我想反向生成字串,我會使用相同的方法并在最后反轉字串。使用 str.insert() 導致超出時間限制和 str='a' str; 會如預期的那樣導致超出記憶體限制。想知道是否有一種簡單的方法可以在 C 中的字串開頭插入一個字符
uj5u.com熱心網友回復:
您已經通過說倒車回答了您自己的問題。只需使用 = 運算子追加然后反轉。
作為另一種方式,首先將元素壓入堆疊,然后將它們彈出以填充字串。
如果它仍然很慢,則將輸出分成小段并將反轉 附加部分流水線化,以使用多個執行緒隱藏延遲。當一個執行緒反轉一個段時,另一個執行緒可以創建另一個段。然后加入所有執行緒并加入它們的輸出段以使單個字符陣列轉換為字串。如果每個段都是 L1 快取的大小,那么反轉應該很快。
如果您不能使用執行緒,那么您仍然可以在 sse/avx 暫存器中進行反轉,它們具有 shuffle 命令可以幫助您使用指令級并行性來隱藏延遲,除非它們比 L1 訪問慢。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/448818.html
上一篇:考慮位置,比較2個字串中的字符