看板 Programming 關於我們 聯絡資訊
給一個字串,若遇到字母,則依照字母順序將它改成 k 個字母後的字母,且不改變大小寫 若超過 Z/z 則回頭從A/a算起 且 k 必定大於 0 且小於等於 9 附上26個字母讓大家方便查詢 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 例如字串為 x3W4jO/a 且 k = 6 則改成 d3C4pU/G 我的寫法:https://i.imgur.com/XBIdN7s.jpg
但是第 3~7 行 與 9~13 行重複性太高了,根本只差在第5行的 'Z' 與第11行的 'z' 因此我改成 https://i.imgur.com/T4YPD3L.jpg
但明顯是錯的,原因在23~26行的註解 不知道各位有沒有漂亮的寫法呢? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 68.181.88.39 ※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1508307377.A.359.html
eight0: 我覺得這不是很大量111.250.158.229 10/18 14:52
Neisseria: 與其糾結在這幾行程式碼上還不如把 203.71.94.20 10/18 15:18
Neisseria: 公開函式/方法設計一下比較實在 203.71.94.20 10/18 15:18
MOONRAKER: 還以為多大量 218.161.46.90 10/18 15:53
MOONRAKER: 等你上班會看到一個block重覆十幾次 218.161.46.90 10/18 15:54
MOONRAKER: 每一個block可能一百行 那也沒多大 218.161.46.90 10/18 15:54
MOONRAKER: 這麼簡單的事情上面搞最佳化就像小學生 218.161.46.90 10/18 16:04
MOONRAKER: 比誰寫字比較快一樣 218.161.46.90 10/18 16:04
kisaraki1976: 即使是小學生比寫字比快,也是可以 42.73.46.173 10/18 17:53
kisaraki1976: 練到基本功的。給個提示,去看看ASC 42.73.46.173 10/18 17:53
kisaraki1976: II表中字母的排列順序,你再思考一 42.73.46.173 10/18 17:53
kisaraki1976: 下條件判斷式怎麼合併怎麼寫。 42.73.46.173 10/18 17:53
yvb: 圖2列22前算個z, 列23就可改為 if(s[i] > z) 60.250.129.28 10/18 19:53
MOONRAKER: 年紀太小做推理訓練不會有好的成果。 218.161.46.90 10/18 20:30
MOONRAKER: 清楚比簡短重要 對新手如此 老手也如此 218.161.46.90 10/18 20:31
bcew: 在23行加上用s[i]的值區分大小寫就能有正確 114.136.10.54 10/18 20:37
iFEELing: 怎麼覺得好像在密碼學看過這東西... 125.224.130.90 10/19 00:08
iFEELing: 凱撒密碼 ? 125.224.130.90 10/19 00:09
adrianshum: 抽個function 就好了。像 char shiftC 49.130.131.203 10/19 08:57
adrianshum: har(char c, int charsToShift, char 49.130.131.203 10/19 08:57
adrianshum: lowerBound, char upperBound) 49.130.131.203 10/19 08:57
adrianshum: 不在lower & upper bound 中間的就直 49.130.131.203 10/19 08:58
adrianshum: 接回傳原字 49.130.131.203 10/19 08:58
vi000246: 你可以去買本clean code 或重構的書 112.104.27.203 10/22 21:43
Killercat: 別用-=, 有個運算元叫做"%" 60.250.140.192 10/24 13:45
Killercat: 用%會精簡很多 60.250.140.192 10/24 13:45
F04E: 推薦讀一下 如何撰寫0錯誤程式 這本書 153.234.17.66 12/12 07:20