由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 星期一福利:某公司店面题
相关主题
50行code能解决addbinary 问题么请教一道G的电面题。。
Leetcode的Substring with Concatenation of All Words超时。text justification 有人ac吗
Dream company Onsite被搞了(少量面经)Word ladder II 感觉算法已经是最优了,但是过不了大测试,能不能帮忙看看?
请教一道题目这个题最好的办法是什么
Permutation leetcode-隔壁讨论FB变态面试官,请教一下leetcode 301题怎么解最优?
问一个facebook的电面收到G家拒信,发面经
问下LeetCode上的题目:count and say发个Twitter的面试题
leetcode 上 wordladderII 求教谁能给贴个大数相减的java code 吗?
相关话题的讨论汇总
话题: string话题: list话题: else话题: integer话题: int
进入JobHunting版参与讨论
1 (共1页)
h*******e
发帖数: 125
1
给一个由1, 0 和 ?组成的字符串,返回所有的matching strings, “
?” 可以 match 0 and 1, 比如说:
input : 1??
output: {100, 101, 110, 111}.
input: 100100?00?
output: {1001000000,1001000001,1001001000,1001001001}
y*****9
发帖数: 149
2
void match_string(string s){
match_recursive("",s)
}
void match_recursive(string s_1, string s_2){
if (s_2.length() == 0) cout << s1 << endl;
if (s_2[0] == '?'){
match_recursive(s_1 + "0", s_2.substr(1));
match_recursive(s_1 + "1", s_2.substr(1));
}
else {
match_recursive(s_1 + str(s_2[0]), s_2.substr(1));
}
}
l*****a
发帖数: 14598
3
1) recursion is not good, it will use extra memory and it will cause
stackoverflow
2) string + string is not recommend as well

【在 y*****9 的大作中提到】
: void match_string(string s){
: match_recursive("",s)
: }
: void match_recursive(string s_1, string s_2){
: if (s_2.length() == 0) cout << s1 << endl;
: if (s_2[0] == '?'){
: match_recursive(s_1 + "0", s_2.substr(1));
: match_recursive(s_1 + "1", s_2.substr(1));
: }
: else {

g*********e
发帖数: 14401
4
void gen(string in) {
vector res;
stack stk;
if(in[0]=='1')
stk.push("1");
else if(in[0]=='0')
stk.push("0");
else {
stk.push("1"); stk.push("0");
}
while(!stk.empty()) {
string one=stk.top(); stk.pop();
int idx=one.length();
if(idx == in.length()) {
res.push_back(one);
cout< } else if(in[idx]=='1') {
one+='1';
stk.push(one);
} else if(in[idx]=='0') {
one+='0';
stk.push(one);
} else {
stk.push(one+'0'); stk.push(one+'1');
}
}
}
l*****a
发帖数: 14598
5
这个题用stack还是第一次见到

【在 g*********e 的大作中提到】
: void gen(string in) {
: vector res;
: stack stk;
: if(in[0]=='1')
: stk.push("1");
: else if(in[0]=='0')
: stk.push("0");
: else {
: stk.push("1"); stk.push("0");
: }

g*********e
发帖数: 14401
6
recursion据说都可以改成stack

【在 l*****a 的大作中提到】
: 这个题用stack还是第一次见到
l*****a
发帖数: 14598
7
我想这么做,你看咋样
List list=new ArrayList();
List result=new ArrayList();
for(int i=0;i if(input.charAt(i)=='?') list.add(0);
}
while(true) {
String cur=genString(input,list);
result.add(cur);
// if all 1 in list, break;
for(int i=list.size()-1;i>=0;i--) {
if(list.get(i)==0) {
list.set(i)=1;
break;
} else {
list.set(i)=0;
}
}
}
return result;

【在 g*********e 的大作中提到】
: recursion据说都可以改成stack
y*****9
发帖数: 149
8
Python:
list = []
for i in range(len(s)):
if (s[i] == ?):
list = [element + '0' for element in list].extend(
[element + '1' for element in list])
else:
list = [element + s[i] for element in list]
print list
g*********e
发帖数: 14401
9

看不懂@@

【在 l*****a 的大作中提到】
: 我想这么做,你看咋样
: List list=new ArrayList();
: List result=new ArrayList();
: for(int i=0;i: if(input.charAt(i)=='?') list.add(0);
: }
: while(true) {
: String cur=genString(input,list);
: result.add(cur);
: // if all 1 in list, break;

l*****a
发帖数: 14598
10
those ?s can be replaced by
000
001
010
011
100
101
110
111
make sense?

【在 g*********e 的大作中提到】
:
: 看不懂@@

相关主题
问一个facebook的电面请教一道G的电面题。。
问下LeetCode上的题目:count and saytext justification 有人ac吗
leetcode 上 wordladderII 求教Word ladder II 感觉算法已经是最优了,但是过不了大测试,能不能帮忙看看?
进入JobHunting版参与讨论
f******n
发帖数: 279
11
mark
d**e
发帖数: 6098
12
你的code似乎有个bug: while(true)没有条件退出,进入死循环.
我觉得你flip bit的那段code有些问题,它并没有正确地flip, list.get(i)是?的index
,用它来跟0/1比较应该是不正确的.
我把它改成这样,用shift bit来做,不知有没有更好的方法.
public static List genMatchers(String str) {
List results = new ArrayList();
if (str != null && str.length() != 0) {
List questionMarkPositions = new ArrayList();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c == '?') {
questionMarkPositions.add(i);
}
}
StringBuilder builder = new StringBuilder(str);
int numberOfQuestionMarks = questionMarkPositions.size();
for (int questionMarkValue = 0;
questionMarkValue < ((1 << numberOfQuestionMarks) - 1);
questionMarkValue++) {
for (int j = 0; j < numberOfQuestionMarks; j++) {
int shift = numberOfQuestionMarks - 1 - j;
char setValue =
(char) ('0' + ((questionMarkValue & (1 << shift)) >>
shift));
builder.setCharAt(questionMarkPositions.get(j), setValue
);
}
results.add(builder.toString());
}
}
return results;
}

【在 l*****a 的大作中提到】
: those ?s can be replaced by
: 000
: 001
: 010
: 011
: 100
: 101
: 110
: 111
: make sense?

g********e
发帖数: 1142
13

this is the clearest logic.

【在 l*****a 的大作中提到】
: those ?s can be replaced by
: 000
: 001
: 010
: 011
: 100
: 101
: 110
: 111
: make sense?

l*****a
发帖数: 14598
14

// if all 1 in list, break;
index
我存的就是0,1不是index

【在 d**e 的大作中提到】
: 你的code似乎有个bug: while(true)没有条件退出,进入死循环.
: 我觉得你flip bit的那段code有些问题,它并没有正确地flip, list.get(i)是?的index
: ,用它来跟0/1比较应该是不正确的.
: 我把它改成这样,用shift bit来做,不知有没有更好的方法.
: public static List genMatchers(String str) {
: List results = new ArrayList();
: if (str != null && str.length() != 0) {
: List questionMarkPositions = new ArrayList();
: for (int i = 0; i < str.length(); i++) {
: char c = str.charAt(i);

X*4
发帖数: 101
15
这方法太暴力了
比递归节省不了多少空间吧,

【在 g*********e 的大作中提到】
: void gen(string in) {
: vector res;
: stack stk;
: if(in[0]=='1')
: stk.push("1");
: else if(in[0]=='0')
: stk.push("0");
: else {
: stk.push("1"); stk.push("0");
: }

w****3
发帖数: 110
16
自己实现stack和递归的复杂度也是一样,不需要每一位都递归,只要碰到?的时候
copy一份递归就可以
或者计算出?的个数m算m^2的全排列再还原原来的数,复杂度也是一样的
d**e
发帖数: 6098
17
看明白了,但你的break比较confusing....

【在 l*****a 的大作中提到】
:
: // if all 1 in list, break;
: index
: 我存的就是0,1不是index

s******t
发帖数: 229
18
干脆大家就讨论怎么生成连续的binary数字算了!
m*****l
发帖数: 95
19
随便给个思路。
public static Set generateStrings(String input) {
Set stringSet = new HashSet();
if(input != null) {
List questionMarks = new ArrayList();
char[] chars = input.toCharArray();
for (int i = 0; i < chars.length; i++) {
if (chars[i] == '?') {
questionMarks.add(i);
} else if (chars[i] != '0' && chars[i] != '1') {
throw new IllegalArgumentException();
}
}
if(questionMarks.size() != 0) {
if(questionMarks.size() > 31) {
throw new IllegalArgumentException("Too many question
marks");
}
for(int i = 0; i < 1 << questionMarks.size(); i++) {
int x = i;
for(Integer position : questionMarks) {
int flag = x & 1;
chars[position] = ( flag == 0) ? '0' : '1';
x = x >> 1;
}
stringSet.add(new String(chars));
}
}else{
stringSet.add(input);
}
}
return stringSet;
}

【在 h*******e 的大作中提到】
: 给一个由1, 0 和 ?组成的字符串,返回所有的matching strings, “
: ?” 可以 match 0 and 1, 比如说:
: input : 1??
: output: {100, 101, 110, 111}.
: input: 100100?00?
: output: {1001000000,1001000001,1001001000,1001001001}

1 (共1页)
进入JobHunting版参与讨论
相关主题
谁能给贴个大数相减的java code 吗?Permutation leetcode-
Reverse Words in a String问一个facebook的电面
问个Zenefits电面题目,他家好难。。。问下LeetCode上的题目:count and say
Google 电面leetcode 上 wordladderII 求教
50行code能解决addbinary 问题么请教一道G的电面题。。
Leetcode的Substring with Concatenation of All Words超时。text justification 有人ac吗
Dream company Onsite被搞了(少量面经)Word ladder II 感觉算法已经是最优了,但是过不了大测试,能不能帮忙看看?
请教一道题目这个题最好的办法是什么
相关话题的讨论汇总
话题: string话题: list话题: else话题: integer话题: int