【发布时间】:2012-01-08 15:57:24
【问题描述】:
我正在编写一个脚本来创建用户名。它应该是四个字母长;传统上,我们使用姓氏的 3 个字母 + 名字的 1 个字母。
如果它已被使用,我们会手动考虑替代方案。
所以,如果我的名字是 Fred Flinstones,我们应该试试 FLIF。如果这不起作用;我们遍历名称:FLIA, FLIB, FLIC ... FLIZ, FLAA, FLAB, FLAC, ... FLZZ, FAAA, FAAB, ...
最简单的方法是遍历最后一个字母;然后通过倒数第二个字母进行另一组循环并遍历最后一个字母;然后通过倒数第三、倒数第二、倒数的一组循环;第四+第三+第二+最后。
这使得很多 do while 循环嵌套在彼此中 + 其他人无法阅读 + 大量输入。
我可以为每个字母使用一个计数器,但这似乎也不优雅
我可以尝试使用一个计数器,然后使用mod 26 查看需要替换多少个字母(但这似乎很复杂)。
有没有一些优雅/有效的方法来做到这一点?
第一次尝试尽可能保持字符串“逻辑正确”的奖励积分(例如,为 Fred 保留最后一个字母 F 或跳过字母 FLIF;FLNF、FLSF、FLTF、...)。
【问题讨论】: