1. 程式人生 > >左耳聽風第一週

左耳聽風第一週

左耳聽風第一週

每週完成一個ARTS: 每週至少做一個 leetcode 的演算法題、閱讀並點評至少一篇英文技術文章、學習至少一個技術技巧、分享一篇有觀點和思考的技術文章。(也就是 Algorithm、Review、Tip、Share 簡稱ARTS)

Algorithm

LeetCode 929.Unique Email Addresses 連結 解題語言 C#

題目 :

每封電子郵件都由一個本地名稱和一個域名組成,以 @ 符號分隔。

例如,在 [email protected]中, alice 是本地名稱,而 leetcode.com

是域名。

除了小寫字母,這些電子郵件還可能包含 ‘,’ 或 ‘+’。

如果在電子郵件地址的本地名稱部分中的某些字元之間新增句點(’.’),則發往那裡的郵件將會轉發到本地名稱中沒有點的同一地址。例如,"[email protected]” 和 “[email protected]” 會轉發到同一電子郵件地址。 (請注意,此規則不適用於域名。)

如果在本地名稱中新增加號(’+’),則會忽略第一個加號後面的所有內容。這允許過濾某些電子郵件,例如 [email protected] 將轉發到 [email protected]。 (同樣,此規則不適用於域名。)

可以同時使用這兩個規則。

給定電子郵件列表 emails,我們會向列表中的每個地址傳送一封電子郵件。實際收到郵件的不同地址有多少?

示例:

輸入:[“[email protected]”,“[email protected]”,“[email protected]”]
輸出:2
解釋:實際收到郵件的是 "[email protected]" 和 "[email protected]"。

【 參考程式碼 】

public int NumUniqueEmails(string[] emails)
        {
            HashSet<
string> ht = new HashSet<string>();//定義一個為 string型別的雜湊表 for (int i = 0; i < emails.Length; i++) { int index1 = emails[i].IndexOf('@');//獲取字串中@索引值 string local = emails[i].Substring(0, index1);//將@之前的字串儲存起來 string rest = emails[i].Substring(index1);//將@字尾儲存 if (local.Contains("+")) { local = local.Substring(0, local.IndexOf('+')); }//將 ‘ + ’ 後面包括+號全部去除 local = local.Replace(".", "");//替換掉無用的. ht.Add(local + rest);//將郵箱字首與字尾組合起來 } return ht.Count();//返回雜湊表有效元素個數,雜湊表中只儲存不重複項 }

Review

The Key To Accelerating Your Coding Skills(中英文對照版)連結 文章是耗子叔在專欄推薦過的,不知道有多少人看下去了呢?
感悟:程式設計並非一日之功,源於興趣,亦成於興趣。只要選對確的方法去努力一定能看到效果。不必超於常人,你只需和常人一般便已非凡

Tip

http://unbug.github.io/codelf/ 一個變數命名查詢的網址,相信很多初學者對於變數命名感到非常苦惱這個網站可以讓你的網站根據你的程式語言匹配出你想要定義的變數可用哪些合適的變數名,對於新手我覺得應該非常實用了。

share

文章連結
分享的是我根據耗子叔 《 程式設計師練級攻略 》推薦的 C 語言的書 《 C 語言程式設計 現代方法 》第二版 一星期的筆記整理, 從 C# 回到 C 我感覺自己又多了許多收穫, 很多知識盲點, 爭取在這個月過完這本書。