w**h 发帖数: 34 | 1 白
谈project;
coding:
输入:
("apple", "banana") = "1"
("apple", "cook", "dog") = "2"
("apple", "cook", "eat") = "3"
("apple", "fruit") = "4"
输出:
"1234
fruit>"
问问题 | q****x 发帖数: 7404 | 2 输入和输出的关系?
【在 w**h 的大作中提到】 : 白 : 谈project; : coding: : 输入: : ("apple", "banana") = "1" : ("apple", "cook", "dog") = "2" : ("apple", "cook", "eat") = "3" : ("apple", "fruit") = "4" : 输出: : "1234
| s******n 发帖数: 3946 | 3 用一个List存放当前Open的XML tag。
每来一个数组,假设0~i匹配List的0~i,首先要关闭List里面i后面的所有tag,然后再
Push新来数组的i后面的所有Tag到List后面
所有数组跑完后再关闭List上所有的Tag
List temp;
String [][]input;
for (int i=0; i
String[] sentence = input[i];
int cursor;
for (cursor=0; cursor
+) {
if (!sentence[cursor].equals(temp[cursor]) break;
}
int closeTags = 0;
for (int j=temp.length()-1; j>=cursor; --j) {
printf("" + temp[j] + ">");
closeTags++;
}
temp.removeLastElements(closeTags);
for (int j=cursor; j
if (j==sentence.length-1)
printf(sentence[j]);
else {
printf("<" + sentence[j] + ">");
temp.append(sentence[j]);
}
}
}
for (int j=temp.length()-1; j>=cursor; --j) {
printf("" + temp[j] + ">");
} | s******n 发帖数: 3946 | 4 最后3行写错了,应该是
for (int j=temp.length()-1; j>=0; --j) {
printf("" + temp[j] + ">");
} | p*****2 发帖数: 21240 | 5 把输入组成一个tree,然后pre-order打印就可以了。 | g*****i 发帖数: 2162 | 6 感觉应该是这个,类似一个deque的数据结构就可以了,建tree可能空间上太浪费
cursor+
【在 s******n 的大作中提到】 : 用一个List存放当前Open的XML tag。 : 每来一个数组,假设0~i匹配List的0~i,首先要关闭List里面i后面的所有tag,然后再 : Push新来数组的i后面的所有Tag到List后面 : 所有数组跑完后再关闭List上所有的Tag : List temp; : String [][]input; : for (int i=0; i: String[] sentence = input[i]; : int cursor; : for (cursor=0; cursor
| s***n 发帖数: 373 | 7 建一个tree
然后用递归呢?
def printMyXML(node):
res = '<' + node.name + '>'
for each in node.childList():
if each.isLeaf():
res = res + node.value + '' + node.name + '>'
else:
res = res + printMyXML(each)
res = res + '' + node.name + '>'
return res | m**q 发帖数: 189 | 8 tree的思路不错啊
不过直接preorder应该不行吧,应该得加些逻辑才能处理
【在 p*****2 的大作中提到】 : 把输入组成一个tree,然后pre-order打印就可以了。
| p*****2 发帖数: 21240 | 9
是要加些逻辑。不过不麻烦。
【在 m**q 的大作中提到】 : tree的思路不错啊 : 不过直接preorder应该不行吧,应该得加些逻辑才能处理
| s******n 发帖数: 3946 | 10 Tree耗空间,用一个长度相当于Tree Height的数组就行了,而且只要一次扫描,tree
要2次,第一次建立tree,第二次遍历,不论时间还是空间都差。
【在 p*****2 的大作中提到】 : : 是要加些逻辑。不过不麻烦。
| | | p*****2 发帖数: 21240 | 11
tree
唉。我也就这水平了。一会儿有心情了好好看看你的算法。
【在 s******n 的大作中提到】 : Tree耗空间,用一个长度相当于Tree Height的数组就行了,而且只要一次扫描,tree : 要2次,第一次建立tree,第二次遍历,不论时间还是空间都差。
| n*******w 发帖数: 687 | | l*****n 发帖数: 577 | 13 How about
("apple", "banana") = "1"
("apple", "cook", "dog") = "2"
("apple", "fruit") = "4"
("apple", "cook", "eat") = "3"
shoue 输出 be"
"1234
fruit>"
or:
"124<
eat>3"
If the requirement is the first output, tree would be good. But the solution
involves too much code for a phone interview. For later, a stack should be
good.
【在 w**h 的大作中提到】 : 白 : 谈project; : coding: : 输入: : ("apple", "banana") = "1" : ("apple", "cook", "dog") = "2" : ("apple", "cook", "eat") = "3" : ("apple", "fruit") = "4" : 输出: : "1234
| l*****n 发帖数: 577 | 14 How about
("apple", "banana") = "1"
("apple", "cook", "dog") = "2"
("apple", "fruit") = "4"
("apple", "cook", "eat") = "3"
shoue 输出 be"
"1234
fruit>"
or:
"124<
eat>3"
If the requirement is the first output, tree would be good. But the solution
involves too much code for a phone interview. For later, a stack should be
good.
【在 w**h 的大作中提到】 : 白 : 谈project; : coding: : 输入: : ("apple", "banana") = "1" : ("apple", "cook", "dog") = "2" : ("apple", "cook", "eat") = "3" : ("apple", "fruit") = "4" : 输出: : "1234
| a****a 发帖数: 186 | 15 如果是第一种要求的话,能说说这个tree具体该怎么建呢?
If the requirement is the first output, tree would be good.
【在 l*****n 的大作中提到】 : How about : ("apple", "banana") = "1" : ("apple", "cook", "dog") = "2" : ("apple", "fruit") = "4" : ("apple", "cook", "eat") = "3" : shoue 输出 be" : "1234 : fruit>" : or: : "124<
|
|