题目大意:字符串中每一个字母(A-Za-z)的大小写不同视为不同的字母大小写排列,给定一个字符串,返回所有的排列。
题目分析:字符串中如果有 n 个字母,返回的结果就会有 2^n 种。可以使用迭代或递归来遍历 2^n 种情况,但是代码会多一些。看过了discussion 后,发现了 2 行 的 python 写法,利用 product 函数来将结果积起来。下面给出一种 Ruby 的写法,只需要一行。
Ac code:
def letter_case_permutation(s)
[""].product(*(s.chars.map{|l|[l.upcase, l.downcase].uniq})).map(&:join)
end