精华帖 (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。 |
|
返回顶楼 | |
发表时间: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对应的所有单词” |
|
返回顶楼 | |
发表时间:2008-04-25
那这样不就是相当于
1、取得一个单词 2、全转换成小写 3、排序 4、去掉重复的字符 5、放入HashSet<String> 6、循环1,直到没有新的单词 7、结果在HashSet中迭代 |
|
返回顶楼 | |
发表时间:2008-04-25
对于问题2:
基于效率速度考虑。 从io缓存,cpu的缓存,以及cpu的流水处理方式考虑。 以下方式或许更更好的利用现代CPU的优势: 使用 1231 + 1大小的数组。days[1232] 1.整个读入所有记录。 2.数组初始化为0 3.挨个将月日转化成数字 n,然后days[n]++ 4.遍历数组,找出最大值 |
|
返回顶楼 | |
发表时间:2008-04-25
问题2:用多线程并发读文件,用一个hashtable存储结果,这样效率能快一些。
|
|
返回顶楼 | |
发表时间:2008-04-25
bookong 写道 那这样不就是相当于
1、取得一个单词 2、全转换成小写 3、排序 4、去掉重复的字符 5、放入HashSet<String> 6、循环1,直到没有新的单词 7、结果在HashSet中迭代 你是rn的那个熊猫吗? |
|
返回顶楼 | |
发表时间:2008-04-30
大家好
我是一个大学生 自己做了一下第一个题目 感觉还可以 自己用两种方法做的 一个是建立一棵树,然后对这个树进行深度优先遍历 这样把结果给输出出来 然后另外我又用递归的方法做了一遍 然后输出结果 发觉如果数的位数比较多的话用递归时间比用树的时间要长 例如: 我输入 56232876 用递归的话全部的时间是: 37453 要是用树的话加上生成树和遍历树的过程的话一共用了 26172 是不是一般树比较大的时候就尽量不用递归啊 |
|
返回顶楼 | |
发表时间: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; } } |
|
返回顶楼 | |
发表时间: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; } } |
|
返回顶楼 | |
发表时间: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; } } |
|
返回顶楼 | |