給您一個字符串。開發一個函數來刪除該字符串中的重複字符。字符串可以是任何長度。你的算法必須在空間中。如果你希望你可以使用恆定大小的額外空間,而不依賴於字符串大小。你的算法必須具有O(n)的複雜性。在不使用遞歸的情況下刪除字符串中的重複字符
我的想法是定義一個大小爲26的整數數組,其中第0個索引對應於字母a的第25個索引,並將所有元素初始化爲0. 因此,我們將整個字符串移動一次並且當我們遇到一封信時,它將在期望的索引處遞增該值。
然後我們將再次移動字符串,如果所需索引值爲1,我們會打印出該字母,否則我們不打印。
以這種方式,時間複雜度是O(n),並且所用的空間是恆定的,而不管字符串的長度如何!
如果有人可以想出更好的效率的想法,這將是非常有益的!
想這是一個家庭作業:P任何編程語言的約束?或僞代碼是好的?例如,如果它是PHP,你可以追加到一個數組,並且大小是可變的,只使用多達你所走過的字符數,並且檢查一個字符是否被檢查是in_array(例如) – Purefan
I不要認爲假定字符串只包含'a'到'z'是公平的。 Unicode中有超過100萬個碼點。 –
@purefan這不是一個家庭作業問題,因爲你已經可以看到我已經將它標記爲採訪qs .. – Poulami