標籤:

當刷題遇見吐槽和涼席椅墊,完美!

鼓不敲不響

燈不撥不亮

事不鑒不清

不辯不明

n

相信絕大多數的碼農都會有一個共同的煩惱:自己的代碼寫的到底好不好?

n

為什麼會有這個煩惱呢?

首先,好或者不好沒有一個量化的標準

其次,找不到人來評價自己的代碼

n

這會是嚴重阻礙程序員成長的一個攔路虎!

n

不知道什麼是好什麼是不好,自然就寫不出更好的代碼。

n

寫不出更好的代碼也就意味著水平停滯不前

n

水平停滯不前也就意味著工資停滯不前、職位停滯不前

n

長此以往,頭髮少了,激情沒了,白富美還沒找到人就40了。。。

n

作為深受大家愛戴的馬哥,當然有責任帶領各位碼農朋友脫離苦海、逆天改命。於是在靈光乍現、識海爆燃、幽府大開的那麼一瞬間(原諒我擇天記看多了),讓我給想到了

n

何不來一場代碼界的吐糟大會?!

n

水平低的負責寫出槽點滿滿的shit代碼,水平高的就在底下一邊嗑瓜子一邊吐糟、裝裝大牛、受受追捧,真真是兩全其美啊!

n

如果再能限制一下吐糟的範圍,一個話題吐個好幾場,做到主題吐糟,那才叫一個完美。

n

說干就干,不然就變成蝦扯蛋了。以下是活動細則:

n

  1. 每期我會發放一個任務,大家編碼實現並提交到github倉庫(發布任務時指定)
  2. n

  3. 隨機選出幾份代碼發布到公眾號文章,入選即送小禮品一份
  4. n

  5. 大家在底部留言就可以吐糟了,也可以吐糟別人的吐糟,也可以提出自己的疑問
  6. n

  7. 吐糟點贊最多的一位贈送小禮品一份
  8. n

PS: 遇到有爭議的問題會在學習群里討論,後續文章公布討論結果。歡迎加入討論,公眾號菜單獲取入群方式

n

代碼吐糟大會第一期

n

本期任務

n

leetcode 20

n

leetcode.com/problems/v

n

活動時間:2017.05.29-2017.06.04

n

爭取每天選取一篇供大家吐槽,請大家不要害羞,積极參与,放心吐糟

n

這麼多人一起幫你review代碼的機會是很難得的哦~

n

代碼提交位置

n

githubwoniu/learnprogram

n

點擊公眾號底部」閱讀原文」可直接跳轉

n

本期獎品

n

夏季涼席椅墊

n

吐糟第一彈

n

以下是很久之前一位小夥伴的提交,咱們先拿來吐著。

n

也恭喜這位小夥伴「被」入圍,獎品馬上奉上

n

筆記名:note_Josan020, 請後台回復收貨地址

n

代碼位置

n

githubwoniu/learnprogram

n

具體內容

n

鏈接

nValid Parentheses | LeetCode OJn

解題思路

n

典型的stack的符號配對問題。

n

注意一些特殊的測試用例就好

()( ) ()() [

n

代碼

n

class Solution { npublic: n bool isValid(string s) { n if(s.size( ) == 0) n { n return false; n } n stack<char> st; n int i = 0; n //加入@主要是為了當stack為空時,以防出現取st.top()的報錯 n //相應測試用例,eg: ) n st.push(@); n while(!st.empty( )&&i!=s.size()){ n switch(s[i]){ n case (: n case [: n case {: n st.push(s[i++]); n break; n case ): n if(st.top( ) != (){ n return false; n } n else{ n st.pop( ); n ++i; n } n break; n case ]: n if(st.top( ) != [){ n return false; n } n else{ n st.pop( ); n ++i; n } n break; n case }: n if(st.top( ) != {){ n return false; n } n else{ n st.pop( ); n ++i; n } n break; n //出現其他無效字元 n default: return false; n } n } n return (st.size( ) == 1) ? true : false; n } n};n

n

上面的程序比較繁瑣,而且對case ]})的案例無法進行統一

n

可以參考這個改進版

n

class Solution { npublic: n bool isValid(string s){ n //suppose null string is illegal n if(s.size( ) == 0){ n return false; n } n stack<char> st;n map<char, char> cm{ {),( },{],[ },{},{ } }; n for(int i = 0; i != s.size( ); ++i){ n switch(s[i]){ n case (: n case [: n case {: n st.push(s[i]); n break; n case ): n case ]: n case }: n if(st.empty( ) || st.top( ) != cm[s[i]]){ n return false; n } n else{ n st.pop( ); n break; n } n //if illegal character appears, like @ # $ % a ... , return false n default: n return false; n } n } n return st.empty( ); n } n};n

n

說明

n

6月1號20點,留言點贊最高的一位將會獲得咱們第一期的吐糟王

為方便統計,請大家到微信公眾號參與吐糟活動!

公眾號:馬志峰的編程筆記

推薦閱讀:

15個C++項目列表
說說 C++ 的 Concept
[譯] C++中帶狀態元編程黑科技(二):實現常量表達式計數器
C++模板元編程--replace_type<>
C++模板元編程---編譯期類成員檢測

TAG:C |