面试-java算法题
1.编写一个程序,输入n,求n!(用递归的方式实现)。

- 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));
- }

2.编写一个程序,有1,2,3,4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
3.编写一个程序,将text1.txt文件中的单词与text2.txt文件中的单词交替合并到text3.txt文件中。text1.txt文件中的单词用回车符分隔,text2.txt文件中用回车或空格进行分隔。

- 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);
- }
- }

4.639172每个位数上的数字都是不同的,且平方后所得数字的所有位数都不会出现组成它自身的数字。(639172*639172=408540845584),类似于639172这样的6位数还有几个?分别是什么?
这题采用的HashMap结构判断有无重复,也可以采用下题的数组判断。
5.比如,968548+968545=321732732它的答案里没有前面两个数里的数字,有多少这样的6位数。

- 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();
- }

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

- 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);
- }

7.写出程序运行结果。

- 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 ");
- }
- }
- }

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

- 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 ");
- }
- }
- }

运行结果:b c
8.单词数
统计一篇文章里不同单词的总数。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组值输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend
#
Sample Output
4

- 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算法题的更多相关文章
- 一道java算法题分析
最近在面试中遇到这样的一道算法题: 求100!的结果的各位数之和为多少? 如:5!=5*4*3*2*1=120,那么他们的和为1+2+0=3这道题不算难,不过倒是注意的细节也有 ...
- 面试经典算法题集锦——《剑指 offer》小结
从今年 3 月份开始准备找实习,到现在校招结束,申请的工作均为机器学习/数据挖掘算法相关职位,也拿到了几个 sp offer.经历这半年的洗礼,自己的综合能力和素质都得到了一个质的提升. 实话说对于未 ...
- 面试 | Java 算法的 ACM 模式
(Java 算法的 ACM 模式) 前言 经常在 LeetCode 上用核心代码模式刷题的小伙伴突然用 ACM 模式可能会适应不过来,把时间花在输入输出上很浪费时间,因此本篇笔记对 Java 算法的 ...
- Java面试常见算法题
1.实现字符串反转 提供七种方案实现字符串反转 import java.util.Stack; public class StringReverse { public static String re ...
- 几个面试经典算法题Java解答
题目一: public class testClockwiseOutput { //顺时针打印一个矩阵 @Test public void test(){ int[][] num = new int[ ...
- 【JAVA算法题】职业抢劫
题目 /*You are a professional robber planning to rob houses along a street. * Each house has a certain ...
- 25道经典Java算法题
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? //这是一个菲波拉契数列问题 [Java] 纯 ...
- 50道java算法题(一)
[程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子的规律为数列1 ...
- 趣味Java算法题(附答案)
[程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每一个月都生一对兔子,小兔子长到第三个月后每一个月又生一对兔子,假如兔子都不死,问每一个月的兔子总数为多少? //这是一个菲波拉契 ...
随机推荐
- Linux目录结构介绍-http://yangrong.blog.51cto.com/6945369/1288072
1.树状目录结构图 2./目录 目录 描述 / 第一层次结构的根.整个文件系统层次结构的根目录. /bin/ 需要在单用户模式可用的必要命令(可执行文件):面向所有用户,例如:cat.ls.cp,和/ ...
- locate 命令详解
locate :http://www.cnblogs.com/peida/archive/2012/11/12/2765750.html 作用:locate命令可以在搜寻数据库时快速找到档案,数据库由 ...
- jingtai ip
BOOTPROTO=staticONBOOT=yesIPADDR=192.168.1.109NETMASK=255.255.255.0GATEWAY=192.168.1.1 HWADDR=00:e0: ...
- Webpack 2 视频教程 016 - Webpack 2 中生成 SourceMaps
原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...
- 如何将外部的obj模型导入OpenGL
1.关于obj的说明. obj中存放的是顶点坐标信息(v),面的信息(f),法线(vn),纹理坐标(vt),以及材质(这个放在mtl)中 我使用CINEMA 4D导出用VS查看后的信息: CINEMA ...
- Java中使用LocalDate根据日期来计算年龄
Java中和日期直接相关的类有很多,平时最常用到的就是java.util package下面的Date和Calendar,需要用到格式的时候还会用到java.text.SimpleDateFormat ...
- JSP的三种注释方式
HTML注释(输出注释):指在客户端查看源代码时能看见注释.例如, <!-- this is an html comment.it will show up int the response. ...
- springboot mybatis 事务管理
本文主要讲述springboot提供的声明式的事务管理机制. 一.一些概念 声明式的事务管理是基于AOP的,在springboot中可以通过@Transactional注解的方式获得支持,这种方式的优 ...
- svn conflict 冲突解决
1. 同一处修改文件冲突 开发人员都知道代码管理工具是开发中一个必不可少的工具,这里也不废话详细介绍了.不管你个人喜欢git还是svn还是其他,但还有一大部分公司在使用svn做代码管理工具.这里详细介 ...
- C# ASP.NET 转换为int型的方法 很实用
很多新手在搞c#或者.net开发的时候总会碰到一些小问题,如何知道字符能不能为int型 在这里我写了一个小的函数仅供大家参考: /// <summary> /// 判断是不是int型 / ...