论坛首页 招聘求职论坛

昨天的JAVA面试题,感觉挺难大家帮忙看看!

浏览 47410 次
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-04-25  
253620236 写道
昨天的JAVA面试题,感觉挺难大家帮忙看看!新手第一次发帖!
2.3求解:在一份文本文件中,查找其中所有的anagram。例如,如果这份文件中包含了stop、tops、pots这样三个单词,这三个词就是一组anagram,这三个单词都是由s、t、o、p这四个字母组成的。这份文件中可能存在多组anagram,大小写视为同样字符。在解答时,需要注意代码的效率、质量。当不能给出完整代码时,可以描述解题思路。

按我的理解,字母相同(不分大小写)且各字母个数也相同的单词,就是一组anagram,比如说abcd和bcda也算是一组anagram,而不是单指stop、tops和pots这三个单词。
我这样理解错了么?怎么很多人都认为只有stop、tops和pots这三个单词才算是一组anagram。
0 请登录后投票
   发表时间:2008-04-25  
GreenForest 写道
253620236 写道
昨天的JAVA面试题,感觉挺难大家帮忙看看!新手第一次发帖!
2.3求解:在一份文本文件中,查找其中所有的anagram。例如,如果这份文件中包含了stop、tops、pots这样三个单词,这三个词就是一组anagram,这三个单词都是由s、t、o、p这四个字母组成的。这份文件中可能存在多组anagram,大小写视为同样字符。在解答时,需要注意代码的效率、质量。当不能给出完整代码时,可以描述解题思路。

按我的理解,字母相同(不分大小写)且各字母个数也相同的单词,就是一组anagram,比如说abcd和bcda也算是一组anagram,而不是单指stop、tops和pots这三个单词。
我这样理解错了么?怎么很多人都认为只有stop、tops和pots这三个单词才算是一组anagram。


我觉得你说的是对的。这道题要的结果应该不是 stop,tops,pots...而应该是类似 stop,list,img...因为它说“查找其中所有的anagram”而不是“某个anagram对应的所有单词”
0 请登录后投票
   发表时间:2008-04-25  
那这样不就是相当于
1、取得一个单词
2、全转换成小写
3、排序
4、去掉重复的字符
5、放入HashSet<String>
6、循环1,直到没有新的单词
7、结果在HashSet中迭代
0 请登录后投票
   发表时间:2008-04-25  
对于问题2:

基于效率速度考虑。
从io缓存,cpu的缓存,以及cpu的流水处理方式考虑。

以下方式或许更更好的利用现代CPU的优势:

使用 1231 + 1大小的数组。days[1232]
1.整个读入所有记录。
2.数组初始化为0
3.挨个将月日转化成数字 n,然后days[n]++
4.遍历数组,找出最大值


0 请登录后投票
   发表时间:2008-04-25  
问题2:用多线程并发读文件,用一个hashtable存储结果,这样效率能快一些。
0 请登录后投票
   发表时间:2008-04-25  
bookong 写道
那这样不就是相当于
1、取得一个单词
2、全转换成小写
3、排序
4、去掉重复的字符
5、放入HashSet<String>
6、循环1,直到没有新的单词
7、结果在HashSet中迭代



你是rn的那个熊猫吗?
0 请登录后投票
   发表时间:2008-04-30  
大家好
我是一个大学生
自己做了一下第一个题目
感觉还可以
自己用两种方法做的
一个是建立一棵树,然后对这个树进行深度优先遍历
这样把结果给输出出来

然后另外我又用递归的方法做了一遍
然后输出结果

发觉如果数的位数比较多的话用递归时间比用树的时间要长

例如:
我输入 56232876
用递归的话全部的时间是: 37453
要是用树的话加上生成树和遍历树的过程的话一共用了 26172
是不是一般树比较大的时候就尽量不用递归啊
0 请登录后投票
   发表时间:2008-04-30  
下面是我的程序
写的很不好:

/*
* 实现堆栈类
* 这个堆栈是一个链表形式的表示
* 其中链表的方向是从top指向尾节点
* 我们添加元素和删除元素都是对top节点进行操作的
* 也就是说,top节点就是堆栈的最上面的元素
*/
public class Stack {

/*
* 记录栈顶的元素状态
*/
public StackNode top;

public int len;

/**
* 构造函数
*/
public Stack()
{
top=null;
len=0;
}

/**
* 获得这个堆栈的长度
* @return
*/
public int getLength()
{
return len;
}

/**
* 看堆栈是不是为空
*/
public boolean IsEmpty()
{
return top==null;
}

/**
* 获得栈顶元素单元存放的数据
*/
public char getTop()
{
return top.data;
}

/**
* 在堆栈中新添加一个元素
* @param n
*/
public void Add(char n)
{
StackNode s=new StackNode();
s.data=n;
s.next=top;
top=s;
len++;
}

/**
* 删除堆栈的栈顶元素
*
*/
public char deleteNode()
{
if(IsEmpty())
{
return ' ';
}
else
{
char n=top.data;
top=top.next;
len--;
return n;
}
}

/**
* 输出这个堆栈中存放的字符串内容
*
*/
public void print()
{
StackNode t=top;
String s="";
while(t!=null)
{
s=s+t.data;
t=t.next;
}
s=s.trim();
int a=s.length();
for(int i=a-1;i>=0;i--)
{
System.out.print(s.charAt(i));
}
System.out.println();
}


}

class StackNode
{
public char data;
public StackNode next;

public StackNode()
{
data=' ';
next=null;
}
}
0 请登录后投票
   发表时间:2008-04-30  
public class Test {

String[] str=new String[10];

public Test()
{
   str[2]="abc";
   str[3]="def";
   str[4]="ghi";
   str[5]="jkl";
   str[6]="mno";
   str[7]="pqrs";
   str[8]="tuv";
   str[9]="wxyz";
}


public void Perm(Stack s,String st,int k)
{
String temp=st.substring(k,k+1);
int num=ToInt(temp);

for(int i=0;i<str[num].length();i++)
{
s.Add(str[num].charAt(i));
if(s.getLength()==st.length())
{
s.print();
}
else
{
Perm(s,st,k+1);
}
s.deleteNode();
}
}

public int ToInt(String s)
{
int i=Integer.parseInt(s);

return i;
}
}
0 请登录后投票
   发表时间:2008-04-30  
import java.io.*;
public class Main {


String str[]=new String[10];


/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
   
long begin=System.currentTimeMillis();
System.out.println("请输入你的号码:");
try
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String ss=br.readLine();
if(contains(ss,'0'))
{

}
else if(contains(ss,'1'))
{

}
else
{

Test a=new Test();
Stack s=new Stack();

a.Perm(s, ss, 0);

}
long end=System.currentTimeMillis();
long t=end-begin;
System.out.println("本次使用的时间是: "+t);
}
catch(Exception e)
{
System.out.println(" 00000   "+e.getMessage());
}
}

public static boolean contains(String s,char k)
{
for(int i=0;i<s.length();i++)
{
if(s.charAt(i)==k)
return true;
}
return false;
}




}
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics