Java实现-每天三道剑指Offre(2-4)

2、实现一个单例模式

 1 /**
 2  * 面试题2:实现单例模式
 3  *
 4  * @author qiuyong 饿汉式
 5  */
 6 public class Singleton01 {
 7     private Singleton01() {
 8     }
 9
10     private static Singleton01 instance = new Singleton01();
11
12     public static Singleton01 getInstance() {
13         return instance;
14
15     }
16 }
17
18 /**
19  * 面试题2:懒汉式
20  * @author qiuyong
21  */
22 public class Singleton02 {
23
24     public static Singleton02 instance;
25
26     public synchronized static Singleton02 getInstance(){
27         if(null==instance){
28             instance=new Singleton02();
29         }
30         return instance;
31     }
32
33 }
34
35 /**
36  * 面试题2:利用内部类
37  * @author qiuyong
38  */
39 public class Singleton03 {
40
41     public static Singleton03 getInstance(){
42         return  InnerClass.instatnce;
43     }
44
45     private static class InnerClass{
46         public static Singleton03 instatnce=new Singleton03();
47     }
48 }

3、二维数组的查找

  题目描述:一个二维数组,每一行从左到右递增,每一列从上到下递增.输入一个二维数组和一个整数,判断数组中是否含有整数。

public class Test {
    public static boolean find(int [][] arry,int num){
        int column=arry[0].length-1;
        int row=0;
        while(row<arry.length&&column>=0){
            if(num==arry[row][column]){
                return true;
            }
            if(arry[row][column]>num){
                column--;
            }else{
                row++;
            }

        }
        return false;
    }

    public static void main(String[] args) {
        int [][] arry=new int[3][3];
        for(int i=0;i<arry.length;i++){
            for(int j=0;j<arry[0].length;j++){
                arry[i][j]=(i+1)*(j+1);
            }
        }

        System.out.println("查看是否有元素9:"+find(arry,9));
        System.out.println("查看是否有元素9:"+find(arry,0));
    }

}

4、替换空格

  题目描述:请实现一个函数,把字符串中的每个空格替换成“%20”。

 1 public class ReplaceBlank {
 2     public static void main(String[] args) {
 3         String str="i am happy";
 4         str=replaceBlank(str);
 5         System.out.println(str);
 6     }
 7
 8
 9     public static String replaceBlank(String str){
10         if(null==str){
11             return null;
12         }
13         StringBuffer sb=new StringBuffer();
14         for(int i=0;i<str.length();i++){
15             if(str.charAt(i)==‘ ‘){
16                 sb.append("%20");
17             }else{
18                 sb.append(str.charAt(i));
19             }
20         }
21         return sb.toString();
22     }
23
24 }
时间: 2024-10-13 16:03:49

Java实现-每天三道剑指Offre(2-4)的相关文章

剑指offer编程题Java实现——面试题7相关题用两个队列实现一个栈

剑指offer面试题7相关题目:用两个队列实现一个栈 解题思路:根据栈的先入后出和队列的先入先出的特点1.在push的时候,把元素向非空的队列内添加2.在pop的时候,把不为空的队列中的size()-1份元素poll出来,添加到另为一个为空的队列中,再把队列中最后的元素poll出来两个队列在栈不为空的情况下始终是有一个为空,另一个不为空的.push添加元素到非空的队列中,pop把非空队列的元素转移到另一个空的队列中,直到剩下最后一个元素,这个元素就是要出栈的元素(最后添加到队列中的元素). 1

《剑指offer》面试题39 二叉树的深度(java)

摘要: 今天翻到了<剑指offer>面试题39,题目二中的解法二是在函数的参数列表中通过指针的方式进行传值,而java是没有指针的,所以函数要进行改造.然而我翻了下别人的java版本(我就想看看有什么高大上的改造,毕竟要传递多个参数,是不是会涉及到那么一点点设计模式呢?),简直不能忍了,我只能用一句话形容:"一本正经的胡说八道",不过我就是喜欢看你胡说八道还迷之自信的样子. 下面吐槽一下这个版本的java代码: 1 //高效率的判断是否是一棵平衡二叉树 2 public b

剑指offer编程题Java实现——面试题10二进制中1的个数

题目: 请实现一个函数,输入一个整数,输出该整数二进制表示中1的个数.例如,把9表示成二进制是1001,有2位是1,该函数输出2解法:把整数减一和原来的数做与运算,会把该整数二进制表示中的最低位的1变成0,与运算进行多少次就有多少个1. 1 package Solution; 2 /** 3 * 剑指offer面试题10:二进制中1的个数 4 * 题目:请实现一个函数,输入一个整数,输出该整数二进制表示中1的个数. 5 * 例如,把9表示成二进制是1001,有2位是1,该函数输出2 6 * 解法

《剑指offer》面试题28:字符串排序(牛客网版本) java

题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母. 这里尤其需要注意2点:1.所有组合不能重复,比如输入"aa",  那么输出的结果应当是"aa" : 2. 输出结果按字典序排序 如果用<剑指offer>上的方法,显然这两点都不能满足,比如

《剑指Offer》Java实现

1. 代码托管在我的Github上面:https://github.com/DanielJyc/SwordOffer 2. <剑指Offer>这本书挺不错,难度适中,思路清晰,并讲到了细节问题:对于面试软件研发的人都应该仔细看看. 原书使用C/C++实现,我决定用Java按照书上的思路重写一下. 3. 对自己大概定了这样一个要求,按照以下思路用Java实现: 第一步:用自然语言体现出自己的思路;第二步,计算机程序亲和型的伪代码:第三步:把自己的思路用程序实现. 前两步主要在本子上面完成,第三步

剑指offer-面试题7:俩个栈实现队列(java)

详细分析请参照C语言版,这里仅仅给出实现代码,注释很详细,不得不说java各种api用起来真是爽飞了 1 package com.xsf.SordForOffer; 2 3 import java.util.Stack; 4 5 /** 6 * 剑指offer pro7,俩个链表实现一个队列 7 * @author ELVIS 8 */ 9 class ListQueue{ 10 //定义俩个栈 11 private Stack<String> stack1 = new Stack<St

【剑指offer】面试题2:实现Singleto模式 java

题目:设计一个类,我们只能生成该类的一个实例. /*一种可行的方式就是采用类级内部类,在这个类级内部类里面去创建对象实例. * 这样一来,只要不使用到这个类级内部类,那就不会创建对象实例, * 从而同时实现延迟加载和线程安全. * */ public class Singleton5 { private Singleton5() {//私有方法确保只创建一个实例 // TODO Auto-generated constructor stub } /** * 类级的内部类,也就是静态的成员式内部类

《剑指offer》全部题目-含Java实现

陆续刷了好久,算是刷完了<剑指offer>,以下全部AC代码,不一定性能最优,如有错误或更好解答,请留言区指出,大家共同交流,谢谢~ 1.二维数组中的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. public class Solution { public boolean Find(int target, int [][] array) { if(array == n

【Java】 剑指offer(7) 二叉树的下一个结点

本文参考自<剑指offer>一书,代码采用Java语言. 题目 给定一棵二叉树和其中的一个结点,如何找出中序遍历顺序的下一个结点? 树中的结点除了有两个分别指向左右子结点的指针以外,还有一个指向父结点的指针. 思路 首先自己在草稿纸上画图,进行分析(不再展开).可以发现下一个结点的规律为: 1.若当前结点有右子树时,其下一个结点为右子树中最左子结点: 2.若当前结点无右子树时, (1)若当前结点为其父结点的左子结点时,其下一个结点为其父结点: (2)若当前结点为其父结点的右子结点时,继续向上遍