问题是从给定的1,0和?模式生成所有二进制字符串。下面的代码是我写的,它给出了无限输出。 例如,如果输入为1?1? ,输出应为1010,1011,1110,1111
我正在使用Queue以迭代方式进行。
static void fill(StringBuilder s)
{
Queue<StringBuilder> q = new LinkedList<StringBuilder> () ;
q.add(s);
while(!q.isEmpty())
{
s = q.peek();
int pos = s.indexOf("?");
if(pos>=0)
{
StringBuilder s1 = new StringBuilder(s);
s1.setCharAt(pos,'0');
q.add(s1);
StringBuilder s2 = new StringBuilder(s);
s1.setCharAt(pos,'1');
q.add(s2);
}
else
System.out.println(s);
q.poll();
}
}
答案 0 :(得分:2)
请注意,您在两种情况下都在修改s1
:
if(pos>=0)
{
StringBuilder s1 = new StringBuilder(s);
s1.setCharAt(pos,'0'); // <-- Here s1 is fine
q.add(s1);
StringBuilder s2 = new StringBuilder(s);
s1.setCharAt(pos,'1'); // <-- You must use s2
q.add(s2);
}