今天做某安全公司笔试题,最后一道编程题如下:
写程序,打印如下信息,程序尽可能少。
(a)(b)(c)……(z)
(ab)(ac)(ad)……(az)(bc)(bd)……(bz)……(yz)
(abc)(abd)(abe)…………(xyz)
………………………………
………………………………
…………………………
(abcd…………xyz)
最后我想要告诉大家一个宇宙间不变的真理:
中午不睡,下午崩溃.
今天做某安全公司笔试题,最后一道编程题如下:
写程序,打印如下信息,程序尽可能少。
(a)(b)(c)……(z)
(ab)(ac)(ad)……(az)(bc)(bd)……(bz)……(yz)
(abc)(abd)(abe)…………(xyz)
………………………………
………………………………
…………………………
(abcd…………xyz)
最后我想要告诉大家一个宇宙间不变的真理:
中午不睡,下午崩溃.
package com.fonxian.set;
import java.util.ArrayList;
public class Test {
static ArrayList<ArrayList<String>> getSubsets(ArrayList<String> set, int index){
ArrayList<ArrayList<String>> allsubsets;
if(set.size() == index){
allsubsets = new ArrayList<ArrayList<String>>();
allsubsets.add(new ArrayList<String>()); //empty set
}else{
allsubsets = getSubsets(set, index+1);
String item = set.get(index);
ArrayList<ArrayList<String>> moresubsets = new ArrayList<ArrayList<String>>();
for(ArrayList<String> s: allsubsets){
ArrayList<String> newSubset = new ArrayList<String>();
newSubset.addAll(s);
newSubset.add(item);
moresubsets.add(newSubset);
}
allsubsets.addAll(moresubsets);
}
return allsubsets;
}
public static void main(String[] args){
ArrayList<String> s = new ArrayList<String>();
s.add("(a)");
s.add("(b)");
s.add("(c)");
s.add("(d)");
ArrayList<ArrayList<String>> allsubsets = getSubsets(s, 0);
for(ArrayList<String> set : allsubsets){
System.out.println(set);
}
}
}
测试用例
[]
[(d)]
[(c)]
[(d), (c)]
[(b)]
[(d), (b)]
[(c), (b)]
[(d), (c), (b)]
[(a)]
[(d), (a)]
[(c), (a)]
[(d), (c), (a)]
[(b), (a)]
[(d), (b), (a)]
[(c), (b), (a)]
[(d), (c), (b), (a)]
//scala 2.11.6
object CharChar {
def main(args: Array[String]) {
val chars = 0.to(25).map('a' + _).map(_.toChar).toList
1 to 3 foreach {
x =>
getList(x,chars).foreach {
result =>
print('('+result+')')
}
}
}
def getList(num: Int, vec: List[Char]): Iterator[String] = {
num match {
case 0 =>
Iterator("")
case _ =>
vec.tails.flatMap {
case head :: tail =>
getList(num - 1, tail).map(head + _)
case x => Vector.empty
}
}
}
}
3改成你要的数字就好了,本地没有编译环境的话可以用这个
https://codepad.remoteinterview.io/ResoluteHypnoticSpiralPedro
我很好奇哪家安全公司。
采用进位的思想,
ax ay az
... z再+1就溢出了, 进位将a
这一位+1
变成b
,然后z
这一位归零
,由于字母不能重复,归为进位的下一个字母 即c