作者woody3724 (woody)
看板Programming
标题[问题] 程式码大量重复却不知如何解决
时间Wed Oct 18 14:16:13 2017
给一个字串,若遇到字母,则依照字母顺序将它改成 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://webptt.com/cn.aspx?n=bbs/Programming/M.1508307377.A.359.html
1F:推 eight0: 我觉得这不是很大量111.250.158.229 10/18 14:52
2F:→ Neisseria: 与其纠结在这几行程式码上还不如把 203.71.94.20 10/18 15:18
3F:→ Neisseria: 公开函式/方法设计一下比较实在 203.71.94.20 10/18 15:18
4F:→ MOONRAKER: 还以为多大量 218.161.46.90 10/18 15:53
5F:→ MOONRAKER: 等你上班会看到一个block重覆十几次 218.161.46.90 10/18 15:54
6F:→ MOONRAKER: 每一个block可能一百行 那也没多大 218.161.46.90 10/18 15:54
7F:→ MOONRAKER: 这麽简单的事情上面搞最佳化就像小学生 218.161.46.90 10/18 16:04
8F:→ MOONRAKER: 比谁写字比较快一样 218.161.46.90 10/18 16:04
9F:→ kisaraki1976: 即使是小学生比写字比快,也是可以 42.73.46.173 10/18 17:53
10F:→ kisaraki1976: 练到基本功的。给个提示,去看看ASC 42.73.46.173 10/18 17:53
11F:→ kisaraki1976: II表中字母的排列顺序,你再思考一 42.73.46.173 10/18 17:53
12F:→ kisaraki1976: 下条件判断式怎麽合并怎麽写。 42.73.46.173 10/18 17:53
13F:推 yvb: 图2列22前算个z, 列23就可改为 if(s[i] > z) 60.250.129.28 10/18 19:53
14F:→ MOONRAKER: 年纪太小做推理训练不会有好的成果。 218.161.46.90 10/18 20:30
15F:→ MOONRAKER: 清楚比简短重要 对新手如此 老手也如此 218.161.46.90 10/18 20:31
16F:→ bcew: 在23行加上用s[i]的值区分大小写就能有正确 114.136.10.54 10/18 20:37
17F:→ iFEELing: 怎麽觉得好像在密码学看过这东西... 125.224.130.90 10/19 00:08
18F:→ iFEELing: 凯撒密码 ? 125.224.130.90 10/19 00:09
19F:→ adrianshum: 抽个function 就好了。像 char shiftC 49.130.131.203 10/19 08:57
20F:→ adrianshum: har(char c, int charsToShift, char 49.130.131.203 10/19 08:57
21F:→ adrianshum: lowerBound, char upperBound) 49.130.131.203 10/19 08:57
22F:→ adrianshum: 不在lower & upper bound 中间的就直 49.130.131.203 10/19 08:58
23F:→ adrianshum: 接回传原字 49.130.131.203 10/19 08:58
24F:推 vi000246: 你可以去买本clean code 或重构的书 112.104.27.203 10/22 21:43
25F:推 Killercat: 别用-=, 有个运算元叫做"%" 60.250.140.192 10/24 13:45
26F:→ Killercat: 用%会精简很多 60.250.140.192 10/24 13:45
27F:→ F04E: 推荐读一下 如何撰写0错误程式 这本书 153.234.17.66 12/12 07:20