p*****2 发帖数: 21240 | 1
我工作不用呀。刚才看了一下,是某个test case超时了,所以不是编译的问题。计时
是计的那个test case。大牛帮我看看这个程序哪里可以提高一些?跟java的算法完全
一样。慢了那么多。
object test {
def main(args: Array[String]): Unit = {
val s=readLine
val a=new Array[Int](s.length())
var i=0
var j=s.length-1
for(k <- 0 to s.length-1)
if(s(k)=='l')
{
a(j)=k+1
j-=1
}
else
{
a(i)=k+1
i+=1
}
a.foreach(println)
}
}
void run() throws Exception
{
... 阅读全帖 |
|
l*******b 发帖数: 2586 | 2 研究了一下IO确实占主要部分,计算部分改成functional慢很多
100000个字符的输入下
Reading: ~20
Time: ~350
IO: ~1400
最开始循环的办法看起来最好 Time: ~30
for和while的区别也不大
object test2 extends App {
val beforeRead = System.currentTimeMillis
val s = readLine
val start = System.currentTimeMillis
val ss = s.zipWithIndex.partition(_._1 != 'l')
val a = ss._1.map(_._2 + 1).mkString("\n") +
ss._2.reverseMap(_._2 + 1).mkString("\n")
val end = System.currentTimeMillis
println(a)
val ioend = System.currentTimeMillis
println("... 阅读全帖 |
|
w********p 发帖数: 948 | 3 evaluator (String expression)
1。将expression parse 成三块 expr1 operator expr2
2 。如果expr1, expr2 都是数字,return 计算结果。 比如6*6
3。 不然,如果operator 是乘除的话,parse 来string2里的第一个数字,得到结果
4. 再不然,recursively call for rest expression.
有两个links很好和大家分析。
http://www.strchr.com/expression_evaluator
http://compsci.ca/v3/viewtopic.php?t=21703
把网上的code帖出来,给爱偷懒的同伙。我还没仔细看。
无意中运行了下面的code,并不能handle所有的cases 。个人还是喜欢stack的版本。
不会没关系,学学就会了吗。呵呵, 会了不用还是会忘嘛。
本科compiler课是要用java写一个compiler出来的。还有微积分,还给老师的知识还少
嘛?。。。
/*
* The "ExpressionEv... 阅读全帖 |
|
p**r 发帖数: 5853 | 4 俺说下思路及考官意图,个人看法。
#1 绝对不一次性读入整个文件!!!!
这个是考你处理大文件的方法,
一次性读入,3行还行,如果3百万行,那就是坑爹
所以类似readline的方式,分行读入,但是不是只读1行!
【注意点】
读单项(不是单行!!!)的时候做一个判断,是否读到结尾了,因为不一定一行包括
了所有信息。
是否结尾标志,用regular expression判断,一旦读到第2个时间,结束,进入数据拆
分!
【可能会加分的,但是有点showoff,遇到考官装X的会起反效果。】
你可以在读文件前再做一个判断,文件小于类似10k,直接读文件,不然就分行读。
也就是说你知道如何处理大文件,但是对小文件也不扯淡。。
#2 必须用regular expression<正则>,要求#4里说得很清楚!!!!
正则表达式分离数据,必须学会,以后会用很多。
判断日期格式,有很多种表达式。
如果不懂,就先去研究一把,这个题目只是分离日期以及后面数据,算简单的。
#3 把数据分离成2部分就不说了,这个你肯定会。
#4 第5条要求的意思其实是为了cross platform等后期需要,
所以建议用xm... 阅读全帖 |
|
j**7 发帖数: 143 | 5 结果:732506
public static void main(String[] args) {
// TODO Auto-generated method stub
File file = new File("triangle.txt");
try
{
BufferedReader in = new BufferedReader(new FileReader(file));
String line;
List list=new ArrayList();
while ((line = in.readLine()) != null) {
String [] temp=line.split("[ ]");
... 阅读全帖 |
|
c******5 发帖数: 84 | 6 昨天刚面的,今天知道挂了。。。
第一轮: 实现一个简化版的boggle game,给定一个dictionary,我用dfs做的
第二轮:给一个int array, 不用division,replace each element with the
multiplication of all elements other than that element
第三轮:给一个method char[] read(int n),读入n个字符,输出到数组中,让实现一
个String readline(),字符流以null结尾
第四轮:实现method: int getNthPrime(int n),找出第n个质数,n从0开始,这题没
打好,想错了,用了sieve of eratosthenes.
唉,感觉面试时一旦想错了如果面试官不提示的话,就万劫不复了。。。 |
|
j*****y 发帖数: 1071 | 7 bless
感觉后面两轮的题目都很难阿
那个实现 readline, 需要独到 换行符吧,读 read(1), read(2), read(4)..., 每个
读的过程中需要寻找换行符。
getNthPrime 面试官需要什么样的算法阿, brute force ? |
|
c******5 发帖数: 84 | 8 readline这题 他的意思好像是每次读固定一串字符 比如read(100) 然后再去判断
getNthPrime这题 我也不知道他想要啥答案 我想错了 结果他也没啥提示的感觉。。。 |
|
i******s 发帖数: 301 | 9 import java.io.IOException;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.TreeSet;
public class Solution {
public static class Racer {
public int start;
public int end;
public int score;
public Racer(int start, int end, int score) {
this.start = start;
this.end = end;
... 阅读全帖 |
|
|
c*u 发帖数: 22 | 11 这样可以么? list 保存每一轮数值并用变量记下该轮最大值:
从上往下
string filename = "data.txt";
if (File.Exists(filename))
{
string line;
List list = new List();
StreamReader sr = File.OpenText(filename);
int max = 0;
while ((line = sr.ReadLine()) != null)
{
int[] array = line.Trim().Split(' ').Select(n => int.Parse(n)).ToArray<
int>();
int size = array.Count();
if (size ==1)
{
list.Add( array[0]);
max = list[0];
}
else if (size>1)
{
int next=0, val = 0;
... 阅读全帖 |
|
c*u 发帖数: 22 | 12 string filename = "data.txt";
if (File.Exists(filename))
{
int depth = 100;
int[,] arr = new int[depth,depth];
StreamReader sr = File.OpenText(filename);
int loop = 0;
while ((line = sr.ReadLine()) != null)
{
int[] array = line.Trim().Split(' ').Select(n => int.Parse(n)).
ToArray();
for(int i=0;i
arr[loop, i] = array[i];
Console.WriteLine(line);
loop++;
}
sr.Close();
//从最底下两层开始
for ... 阅读全帖 |
|
s*********d 发帖数: 2406 | 13 完成第一部分,regex好像很难,我google了一堆好像没有perfect方案
现在这个也很占内存
public HashSet readfromfile(String filename) {
HashSet plist=new HashSet() ;
try {
File file = new File(filename);
if (file.exists()) {
BufferedReader input = new BufferedReader(new FileReader(
file));
String line = null;
while ((line = input.readLine()) != null) {
StringBuffer paralist=new StringBuffer... 阅读全帖 |
|
B*****g 发帖数: 34098 | 14 你不会python为啥非要用python?
import sys
infile = open(sys.argv[1], 'r')
v_list = []
d_list = []
for line in infile.readlines():
w_list = line.rstrip('n').split(' ')
if w_list[0] == '_a_':
v_list.append(w_list[1])
d_list.append(w_list[2])
infile.close()
outfile = open(sys.argv[2], 'w')
outfile.write(', '.join(v_list) + '\n')
outfile.write(', '.join(d_list) + '\n')
outfile.close() |
|
w***5 发帖数: 20 | 15 上次onsite,4轮,自己感觉很好.
HR回信也说: went well so far but still need last code question interview to
end the process
要安排电话面试
结果我说:电面不好,我要求onsite,今天上午就onsite了.
结果, 一看是一个严肃的老印,基本听不懂其在说什么
就一道题:
实现 int Read(int Size, char * buffer) using int Read4(char * buffer)
这题思路很简单的,我当时给了2种方法结果在他的引导上走上了一条不归路,第一次实
现有bug, 没考虑buffer里面留下的部分....汗 ...各种改...(这题原来有过类似的
readLine, 但是自己觉得应该简单没有动手仔细写过, 结果在press下不能写好, 还是
实力不够!!!)
最后老印拍了照,明显要回去Negative的节奏
也许看到了老印,第一感觉就不妙吧,有了心理暗示, 过程中沟通也不是很顺畅. 面到40
分钟的时候,老印就不出题了, 直接叫问问题.汗
郁闷, 悔恨, 临门一脚... 阅读全帖 |
|
z*********8 发帖数: 2070 | 16 貌似比用Read4096实现readline要容易些 |
|
s********u 发帖数: 1109 | 17 我觉得第二种办法有点多此一举吧。我觉得这道题的本意就是说,4这个buff很小,然
后你要把这些很小的数据存到一个大的buffer里去,也就是read(size,char *buffer
)。比如read(4000,buffer)就相当于read4k(buffer)
额。。这个read(2)和read(5)也没想到,不过应该能想到剩下的东西,还应该在
4buff里呆着,下次read(size)的时候还要用。跟那个readline的题一样
“(size/4+1)次Read4再读最后一次size%4 byte的方法”这句话是普遍适用的,不过如
果当前4buff不为空,应该要先把上次剩下的渣渣读进来吧。
这个题感觉第一次碰到的话很难做好,有点刁难。
read |
|
d*k 发帖数: 207 | 18 //欢迎拍砖,共同提高。
char* readLine(char* ret) {
vector store;
static char buf[SIZE];
static buf_size = 0;
while (true) {
if (buf_size == 0) {
buf_size = read(buf, SIZE);
}
int last = 0;
for (last = 0; last < buf_size && buf[last] != '\n'; ++last);
copy(buf, buf + last, back_inserter(store));
if (last < buf_size) {
buf_size = buf_size - (last + 1);
memmove(buf, buf + last + 1, buf_size)
... 阅读全帖 |
|
t******i 发帖数: 483 | 19 刚发现 让我们用的是 int read(char* buf, int len) 和char * readLine()是两个东
西。
read(buf, len)的返回值和len不一样,就可以block了。
int read(char* buf, int len) 主要计算每次读入len长有没有终止 |
|
o**8 发帖数: 109 | 20 似乎有bug:
假如SIZE=10,在第15个字符出现n. 第一行读出来返回没问题,但剩余的5个字符
memmove到前面还没推进store,就被第二次ReadLine开始的read冲掉了。
另外好像还有个off by 1 bug |
|
w*******e 发帖数: 395 | 21 这道题里的block是什么意思?跟那道用read4096()实现readline()有什么区别?
谢谢
as |
|
s********u 发帖数: 1109 | 22 老题了吧,不过老要写错,尤其是那个read4写read的更恶心。
#define MAX_LEN 4096
int read(char* buf, int len);
char *readLine(){
static bool EOF = false;
char *str = NULL;
int i, size = 0;
static int currentPos = MAX_LEN;
static char* buffer = new char[MAX_LEN];
while(!EOF || currentPos != MAX_LEN ){
// buffer is not empty, handle buffer first
if(currentPos != MAX_LEN){
for(i = currentPos; i < MAX_LEN; i++)
if( buffer[i] ==... 阅读全帖 |
|
|
d**********x 发帖数: 4083 | 24 i think the standard way should be to maintain an internal buffer.
what's the solutions from internet? |
|
s**x 发帖数: 7506 | 25 readN is not called anywhere? |
|
s**x 发帖数: 7506 | 26 I see.
"bytes+=memcpy(dst+bytes, buf, min); "
buf should be ptr here? |
|
h**o 发帖数: 548 | 27 yeah. bytes+=memcpy(dst+bytes, buf+ptr, min);
thanks |
|
|
d**********x 发帖数: 4083 | 29 i think the standard way should be to maintain an internal buffer.
what's the solutions from internet? |
|
s**x 发帖数: 7506 | 30 readN is not called anywhere? |
|
s**x 发帖数: 7506 | 31 I see.
"bytes+=memcpy(dst+bytes, buf, min); "
buf should be ptr here? |
|
h**o 发帖数: 548 | 32 yeah. bytes+=memcpy(dst+bytes, buf+ptr, min);
thanks |
|
|
A*****i 发帖数: 3587 | 34 上个月刚被G家问过
这个主要就是考虑边界吧,ptr没有什么tricky的问题好像 |
|
p*******e 发帖数: 186 | 35 我需要登录一个网站,输入用户名和密码,然后下载登录后的网页内容。请问Java如何
能做到?
我在网上找到下面一段代码,但好像不工作,不知道什么原因。版主请手下留情,这里
高手多。我刚学Java。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Authenticator;
import java.net.MalformedURLException;
import java.net.PasswordAuthentication;
import java.net.URL;
public class AuthDemo {
public static void main(String args[]) throws MalformedURLException,
IOException {
String urlString = "";
St... 阅读全帖 |
|
S***8 发帖数: 13 | 36 来自主题: JobHunting版 - FB 面筋 发个面筋攒点rp
店面:
1.实现 readline,假设提供read4k可以读取4k个字符
2.convert binary tree to double linked list
Onsite:
1.string serialize & deserialize
serialize: 输入两个string,返回serialized string
deserialize:输入serialized string,返回原来两个string
2.integer divide without using /
3.会议室安排问题
4.给一个string,比如UAXXBAUB,给一个pattern,比如AB,返回包含pattern的最短
substring,结果是AUB
5.regex mathing, 比leetcode上还方便一些,只要实现+
6.colour sorting |
|
m*****k 发帖数: 731 | 37 来自主题: JobHunting版 - FB 面筋 private static String buffer="";
private static int start = 0;
private static String readLine(){
if (buffer == null){
return null;
}
int n = buffer.indexOf("n", start);
while(n<0){
String new4k = read4k();
if(new4k==null || new4k.length()==0){
String firstLine = buffer ;
buffer = null;
return firstLine;
}
... 阅读全帖 |
|
f**********t 发帖数: 1001 | 38 class CompanyDB:
def __init__(self, fname):
self.industries = defaultdict(set)
self.companies = defaultdict(set)
fp = open(fname);
for line in fp.readlines:
items = line.split('|')
if len(items) < 3:
continue
if items[0] == "industry":
self.industries[items[2].strip()].add(items[1].strip())
elif items[0] == "company":
self.companies[items[2].strip()].add(items[1].st... 阅读全帖 |
|
j**********3 发帖数: 3211 | 39 怎么能判断一行结束?或者是整个文件结束?
C++的话,可以用 n 来判断, java怎么判断?
看过几个版本的,也用 n 来判断的,可是我记得java string没有这个吧? |
|
h*********d 发帖数: 336 | 40 另外, 我写了个main to do test, 写的比较糙,是不是这样parse command不好啊?
public static void main(String[] args){
FileSystem fs = FileSystem.getInstance();
File file = new File("C:/JobHunting/input.txt");
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line = new String();
while ((line = br.readLine()) != null) {
String[] command = line.split(" ");
if (command[0].equals("mkdir")) {
fs.createDirctory(command[1]);
} else if (command[0].equals("cd")) {
fs.changeWorkingDir(command[1]);
} else... 阅读全帖 |
|
o**********e 发帖数: 18403 | 41 【 以下文字转载自 SanFrancisco 讨论区 】
发信人: onetiemyshoe (onetiemyshoe), 信区: SanFrancisco
标 题: 面完fb,结果已经出来了,share下被拒的原因(请转jobhunting版 (转载)
发信站: BBS 未名空间站 (Wed Nov 19 21:05:36 2014, 美东)
发信人: Dreamer (不要问我从哪里来), 信区: Dreamer
标 题: 面完fb,结果已经出来了,share下被拒的原因(请转jobhunting版
发信站: BBS 未名空间站 (Tue Nov 18 20:46:44 2014, 美东)
考了下古,发现这位哥们的转贴,基本可以确认是一个人,基本可以确定这个是我被拒
的原因
同样迟到了大概5分钟,闲扯了十分钟左右,然后read4,确实很简单,但是给的题目非
常不清楚,所以完全没有考虑buffer里面留下的部分,中间我问了除了输出int,需不需
要考虑读出的字符放在哪里,被他含混过去了。自己没做过底层的东西,竟然也没有看
到这个帖子,细节基本一致,因为题目很简单,所以35分钟内... 阅读全帖 |
|
n********n 发帖数: 529 | 42 这是我当时写的,1个半小时左右吧。
/////////////////////////////////////////////////////
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.HashMap;
import java.util.HashSet;
public class TestForSalesforce {
// Variable to track the dependencies
HashMap> deps = new HashMap
String>>();
// Variable to track the installed commands
HashMap ins = new HashMap();
public boolean... 阅读全帖 |
|
z***m 发帖数: 1602 | 43 如果有\n,输出的是string; 如果没有, readline输出什么呢? |
|
z***m 发帖数: 1602 | 44 不会这么简单吧?
string buffer;
while(true)
{
string line = recv();
buffer += readLine();
if (line.find("\n) == npos){
return buffer;
}
} |
|
b**********5 发帖数: 7881 | 45 然后还有一个FileLineIterator
class FileLineIterator {
String nextLine;
public FileLineIterator(String fileName) {
try {
File file = new File(fileName);
BufferedReader br = new BufferedReader(new FileReader(file));
this.nextLine = null;
} catch {
throw new RuntimeException("...");
}
}
public boolean hasNext() {
if (nextLine == null) {
nextLine = br.readLine();
}
return nextLine!=null;... 阅读全帖 |
|
d******e 发帖数: 2265 | 46 你不需要吧文件都load到内存。
readlines函数返回一个iterator。
你next几步之后它回读新的到内存,否则就停在那里。
thousands
can
loaded |
|
H******e 发帖数: 4682 | 47 希望static node fromArray(int[] a) {...}中的head或者tail只用到一个, 应该如何
update codes? Expect working codes in visual studio with only head or tail,
which mean eliminate the head or tail. Just 1 variable, no constructor. :)
hint:
You do not need double-linked list. Just think, why do we have head and tail
variables. We do not do anything with head except initial assignment.
class node
{
public int value;
public node next = null;
static node fromArray(int[] a)
{
... 阅读全帖 |
|
t********n 发帖数: 611 | 48 import java.util.HashMap;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.File;
import java.util.*;
public class Cluster4{
public static void main(String args[]) throws FileNotFoundException,
IOException{
long startTime = System.currentTimeMillis();
String line;
String path = "/Users/***/documents/java/coursera_2/week_2/
problem_2/clustering_big.txt";
File nodeFile = ne... 阅读全帖 |
|
u***8 发帖数: 1581 | 49 谢谢。
还有
for (String line; (line = reader.readLine()) != null;) {
他说要
Use a while loop as is standard. Or use the IOUtils to read fully.
这算么? |
|
h**********I 发帖数: 51 | 50 是不是挑刺每个人的感觉也不一样的,因为主观标准不一样。
以上几点我觉得都不是在挑刺。
尤其是这个:“for (String line; (line = reader.readLine()) != null;) {”
如果是我的话我会给出同样的review。 |
|