今天有空写了一下,放在了这里: http://codepen.io/yummy/pen/aJdPRq?editors=0011
实现了任意两个小写英文字符之间所有字符的遍历。 方法比较笨拙,但好在满足了自己的需求。
1
azh7138m 2017-02-26 00:51:25 +08:00 via Android
这个和从 x 遍历到 y 并输出是一样的,只不过这个是 26 进制罢了
|
2
aheadlead 2017-02-26 00:53:56 +08:00 via iPhone
写个 dfs … 先睡了
|
3
starvedcat 2017-02-26 03:46:45 +08:00 1
这题很基础,高手应该不太会愿意动手写。本人献丑了
MIN_LENGTH = 2; MAX_LENGTH = 3; for (var len = MIN_LENGTH; len <= MAX_LENGTH; len++) { var word_array = []; for (var j = 0; j < len; j++) { word_array[j] = 0 } while (true) { var word = ''; for (var k = 0; k < len; k++) { word += String.fromCharCode(97 + word_array[k]); } console.log(word); for (k = len - 1; k >= 0; k--) { if (word_array[k] < 25) { break; } } if (k == -1) { break; } word_array[k]++; for (k++; k < len; k++) { word_array[k] = 0; } } } |
4
des 2017-02-26 06:57:20 +08:00 via Android
@starvedcat 换我应该会按照一楼说的方式,预先计算 m 到 n 有多少个及总共有多少个,从最小合适的数(如果最少为一位,从零开始)
然后通过类似进制转换的方式进行映射 |
5
aheadlead 2017-02-26 07:04:06 +08:00
刚醒
抱歉不是很会写 js 用 python 代替吧 def rich(length): ....alphabet = [chr(_) for _ in range(ord('a'), ord('z')+1)] ....fu = [[], alphabet] ....for i in range(1, length): ........fu.append([c + s for c in alphabet for s in fu[1]]) ....return fu |
9
aheadlead 2017-02-26 08:05:59 +08:00 1
不过上面好像写错了一个地方,不是很懂为什么刚打错了……
def rich(length): ....alphabet = [chr(_) for _ in range(ord('a'), ord('z')+1)] ....fu = [[], alphabet] ....for i in range(1, length): ........fu.append([c + s for c in alphabet for s in fu[i]]) # 在这里 ....return fu |
10
hd7771 2017-02-26 08:49:24 +08:00 via Android
你这玩意就是 26 进制的数,直接把 10 进制转换成 26 就行了。
|
15
zhy0216 2017-02-26 09:52:10 +08:00
def hah(length):
....if length == 0: return [[""]] ....return hah(length-1) + [[c+chr(97+i) for c in (hah(length-1)[-1]) for i in range(26)]] |
16
hxsf 2017-02-26 09:57:35 +08:00 2
|
17
zhy0216 2017-02-26 09:58:05 +08:00
忘记加个变量 cache 一下...
def hah(length): ....if length == 0: return [[""]] ....cached = hah(length-1) ....return cached + [[c+chr(97+i) for c in (cached[-1]) for i in range(26)]] |
18
7sDream 2017-02-26 13:09:56 +08:00
|
19
xiaoxiuaoliang OP @starvedcat 赞~ 将代码适当封装成函数就更棒了,类似 @hxsf 那样
|
20
xiaoxiuaoliang OP @aheadlead python 基本不了解 哈哈 不过还是非常感谢你的回复,铜币已送上~
|
21
xiaoxiuaoliang OP @zhy0216 厉害了我的司机,精简的代码总是看起来非常酷炫
|
22
xiaoxiuaoliang OP @hxsf 铜币已奉上,非常感谢你的回复,出去浪了一天,这次完完全全的来了次"拿来主义" 嘎嘎
|
23
hxsf 2017-02-26 22:58:46 +08:00
@xiaoxiuaoliang #22 用了 ES6 语法,用之前确定能用,或者改成 es5 语法
|