C#中有關字符串去重的解決方案


今天在群里看到一個同學的面試題

 

題目中有一個這樣的要求

 

//本地有個文檔文件a.txt里面包含的內容分為一段字符串“abacbacde”請編寫一個程序,獲取文件得到對應的內容,並對得到的字符串進行過濾,過濾規則為當字符串中出現多個相同的字符,將非首次出現的字符過濾掉

這里我們不再考慮如何讀取文件內容這部分

 

我們只關注一下字符串的過濾方法

 

解決方案一:

 

我們使用系統內置的一個元素去重方法Distinct

 

            string a = "abcabcd";
            char[] b = a.ToArray().Distinct().ToArray();
            string c = string.Join("", b);

 

這里輸出為“abcd”

 

解決方案二:

            ArrayList alist = new ArrayList();
            char[] strs = a.ToArray();
            for (int i = 0; i < strs.Length; i++)
            {
                if (!alist.Contains(strs[i]))
                {
                    alist.Add(strs[i]);
                }
            }

這樣最后的alist數組列表里就是我們需要的數據了

 

只需要循環輸出一下就好了

 

關於性能

 

看了下源碼,內置類庫提供的方法使用了類似hash的比較方式

 

才疏學淺看的不是特別懂,這里也沒做時間測試。

 

有疑問了再說吧

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM