面试-java算法题

时间:2024-12-13 09:35:08

1.编写一个程序,输入n,求n!(用递归的方式实现)。

面试-java算法题
public static long fac(int n){
if(n<=0) return 0;
else if(n==1) return 1;
else return n*fac(n-1);
}
public static void main(String [] args) {
System.out.println(fac(6));
}
面试-java算法题

2.编写一个程序,有1,2,3,4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

按 Ctrl+C 复制代码
按 Ctrl+C 复制代码

3.编写一个程序,将text1.txt文件中的单词与text2.txt文件中的单词交替合并到text3.txt文件中。text1.txt文件中的单词用回车符分隔,text2.txt文件中用回车或空格进行分隔。

面试-java算法题
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter; public class text{
public static void main(String[] args) throws Exception{
String[] a = getArrayByFile("text1.txt",new char[]{'\n'});
String[] b = getArrayByFile("text2.txt",new char[]{'\n',' '});
FileWriter c = new FileWriter("text3.txt");
int aIndex=0;
int bIndex=0; while(aIndex<a.length){
c.write(a[aIndex++] + "\n");
if(bIndex<b.length)
c.write(b[bIndex++] + "\n");
} while(bIndex<b.length){
c.write(b[bIndex++] + "\n");
}
c.close();
} public static String[] getArrayByFile(String filename,char[] seperators) throws Exception{
File f = new File(filename);
FileReader reader = new FileReader(f);
char[] buf = new char[(int)f.length()];
int len = reader.read(buf);
String results = new String(buf,0,len);
String regex = null;
if(seperators.length >1 ){
regex = "" + seperators[0] + "|" + seperators[1];
}else{
regex = "" + seperators[0];
}
return results.split(regex);
} }
面试-java算法题

4.639172每个位数上的数字都是不同的,且平方后所得数字的所有位数都不会出现组成它自身的数字。(639172*639172=408540845584),类似于639172这样的6位数还有几个?分别是什么?

这题采用的HashMap结构判断有无重复,也可以采用下题的数组判断。

按 Ctrl+C 复制代码
按 Ctrl+C 复制代码

5.比如,968548+968545=321732732它的答案里没有前面两个数里的数字,有多少这样的6位数。

面试-java算法题
 public void selectNum(){
for(int n = 10; n <= 99;n++){
for(int m = 10; m <= 99;m++){
if(isRepeat(n,m)){
continue;
}
else{
System.out.println("组合是"+n+","+m);
}
}
}
} public boolean isRepeat(int n,int m){
int[] a={0,0,0,0,0,0,0,0,0,0};
int s=n+m;
while(n!=0){
a[n%10]=1;
n=n/10;
} while(m!=0){
a[m%10]=1;
m=m/10;
} while(s!=0){
if(a[s%10]==1){
return true;
}
s=s/10;
}
return false;
} public static void main(String args[]){
new test().selectNum();
}
面试-java算法题

6.给定String,求此字符串的单词数量。字符串不包括标点,大写字母。例如 String str="hello world hello hi";单词数量为3,分别是:hello world hi。

面试-java算法题
 public static void main(String [] args) {
int count = 0;
String str="hello world hello hi";
String newStr="";
HashMap<String,String> m=new HashMap<String,String>();
String [] a=str.split(" ");
for (int i=0;i<a.length;i++){
if(!m.containsKey(a[i])){
m.put(a[i],"1");
count++;
newStr=newStr+" "+a[i];
}
}
System.out.println("这段短文单词的个数是:"+count+","+newStr);
}
面试-java算法题

7.写出程序运行结果。

面试-java算法题
public class Test1 {
private static void test(int[]arr) {
for (int i = 0; i < arr.length; i++) {
try {
if (arr[i] % 2 == 0) {
throw new NullPointerException();
} else {
System.out.print(i);
}
}
catch (Exception e) {
System.out.print("a ");
}
finally {
System.out.print("b ");
}
}
} public static void main(String[]args) {
try {
test(new int[] {0, 1, 2, 3, 4, 5});
} catch (Exception e) {
System.out.print("c ");
}
} }
面试-java算法题

运行结果:a b 1b a b 3b a b 5b

面试-java算法题
public class Test1 {
private static void test(int[]arr) {
for (int i = 0; i < arr.length; i++) {
try {
if (arr[i] % 2 == 0) {
throw new NullPointerException();
} else {
System.out.print(i);
}
} finally {
System.out.print("b ");
}
}
} public static void main(String[]args) {
try {
test(new int[] {0, 1, 2, 3, 4, 5});
} catch (Exception e) {
System.out.print("c ");
}
} }
面试-java算法题

运行结果:b c

8.单词数

统计一篇文章里不同单词的总数。

Input

  有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。

Output

  每组值输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。

Sample Input

you are my friend

#

Sample Output

4

面试-java算法题
public static void main(String [] args) {
List<Integer> countList=new ArrayList<Integer>();
int count;
HashMap<String,String> m;
String str; //读取键盘输入的一行(以回车换行为结束输入)
String[] a; Scanner in=new Scanner(System.in); while( !(str=in.nextLine()).equals("#") ){
a=str.split(" ");
m=new HashMap<String,String>();
count = 0;
for (int i=0;i<a.length;i++){
if(!m.containsKey(a[i]) && (!a[i].equals(""))){
m.put(a[i],"1");
count++;
}
}
countList.add(count);
}s for(int c:countList)
System.out.println(c);
}
面试-java算法题