今天在群里看到一個同學的面試題
題目中有一個這樣的要求
//本地有個文檔文件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的比較方式
才疏學淺看的不是特別懂,這里也沒做時間測試。
有疑問了再說吧