- 博客(42)
- 收藏
- 关注
转载 Java_字符串匹配算法总结
字符串模式匹配算法(string searching/matchingalgorithms)转载自http://blog.csdn.net/chndata/article/details/43792363顾名思义,就是在一个文本或者较长的一段字符串中,找出一个或多个指定字符串(Pattern),并返回其位置。这类算法属基础算法,各种编程语言都将其包括在自带的String类函
2017-10-28 10:58:41 578
原创 Java_字符串模式匹配
暴力破解法(Brute-Force)主字符串的长度为n,子串的长度为m。将主字符串与子字符串进行逐一比较,若主串与子串相等,加一。若匹配最后不想等,则从主串下一索引开始重新匹配。最多需要比较(n-m)*m次。public class BruteForce { public static int BF(String S,String P) { int index=-1; i
2017-10-28 09:49:41 512
转载 Java中Iterable和Iterator的辨析
1、Iterable接口Iterable接口 (java.lang.Iterable) 是Java集合的顶级接口之一。我们首先看下这这个接口在JDK中的定义:package java.lang; public interface Iterable{ Iterator iterator(); } 123456(1)可见,Iterable接口中只包含一个方法,就
2017-10-26 14:55:19 224
原创 Java_快速排序
快排思路:1.随机打乱所有数,保证数据的随机性。2.需要两个辅助函数,一个是交换函数,一个是分区操作函数。3.先从序列中挑取一个数,以该数作为基准,所有比基准大的数方在基准后面,比基准小的数放在基准前面。基准函数:选取第一个数作为基准。选取头尾两个指针,将头指针向右移动,尾指针向左移动。如果头指针位置元素小于基准,则将头指针向右移动,如果尾指针元素大于基准,则将尾指针向左移动。直到
2017-10-25 20:52:57 246
原创 Java排序之归并排序
归并排序有两种方式:采用递归的方式,从顶向下递归。采用非递归方式,两两归并,自底向上。归并排序的核心都是归并操作:1.申请空间,使其大小为两个已排序的数组大小之和,用来存放排序之后的数组。2.复制数组,将数组a复制到辅助数组aux2.分别指定已排序的两个数组头结点。3.分别比较两个数组头元素,将较小值放入数组中。4.重复3,直至全部排序完。package Suanf
2017-10-25 09:10:09 242
原创 Java排序之选择排序、插入排序、希尔排序、冒泡排序
排序算法package Suanfa;public class Suanfa1 { public static void sort(Comparable[] a) { } public static boolean less(Comparable v, Comparable w) { return v.compareTo(w)<0;//判断v是否小于w } pub
2017-10-23 21:32:00 423
原创 Comparable接口与Comparator接口
Comparable接口内部只有一个要重写的方法int compareTo(Object obj)。该方法返回一个整数值,实现该接口的类必须实现该方法。当一个对象调用该方法与另一个对象比较时,obj1.compareTo(obj2)如果该方法返回0,则表明这两个对象相等。(并不意味值obj1.equals(obj2)=true,单最好这样)如果大于0则obj1>obj2,如果小于0则o
2017-10-22 15:37:10 256
原创 Collections工具类
Java提供了一个操作Set、List、Map集合的工具类:Collections,该工具里提供了大量方法对集合元素进行排序、查询和修改操作。(1)sort()排序方法 函数定义:public static > void sort(List list) 根据元素的 自然顺序对指定列表按升序进行排序。 参数:要排序的列表。
2017-10-22 11:42:54 245
转载 Arrays用法整理
1. asList方法 @SafeVarargs public static T> ListT> asList(T... a) { return new ArrayList(a); } 使用该方法可以返回一个固定大小的List,如: ListString> stringList = Arrays.asList("Welcome", "To", "Ja
2017-10-22 11:05:02 217
原创 Java_集合(Set、List、Queue)
什么是集合:Java中的集合,就是保存对象的集合。是一种只能用来保存对象的集合。Java集合包括四种:Set、List、Queue、Map。其中Set代表无序、不可重复的集合。List代表有序、重复的集合。Map代表具有映射关系的集合。Queue代表一种队列集合实现。Java中的集合类主要有两个接口派生而来:Collection接口和Map接口。Collection接口
2017-10-21 15:54:59 461
转载 Java字符串
String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全)查看 API 会发现,String、StringBuffer、StringBuilder 都实现了 CharSequence 接口,内部都是用一个char数组实现,虽然它们都与字符串相关,但是其处理机制不同。String:是不可改变的量,也
2017-10-21 08:43:57 200
原创 Lambda表达式与匿名内部类的联系和区别
联系:lambda表达式创建的对象与匿名内部类生成的对象一样,可以直接调用接口中继承的默认方法。区别:1.匿名内部类可以为任意接口创建实例,不管接口中包含多少个抽象方法,只要在匿名内部类中实现所有抽象方法即可。 但在lambda表达式中只能为函数式接口创建实例。2.匿名内部类可以为抽象类甚至普通类创建实例;但lambda表达式只能为函数式接口创建实例。3.匿名内部类实现
2017-10-19 16:02:38 1836
原创 内部类
package learnJava;public class NeibuLei { private double weight; private String prop="外部类的实例变量. "; public NeibuLei() {} public NeibuLei(double weight) { this.weight=weight; } //定义一个非静态内部类,用p
2017-10-18 22:10:45 247
原创 java_接口和抽象类与设计模式
接口和抽象类都具有以下特征:接口和抽象类都不能被实例化,他么都位于继承树的顶端,用于被其他类实现和继承。接口和抽象类都可以包含抽象方法,实现接口和抽象类的普通子类必须实现这些抽象方法。接口和抽闲类的不同:接口作为系统和外界交互的窗口,接口体现的是一种规范。接口规定了实现者必须向外提供哪些服务。当在一个程序中使用接口时,接口时多个模块间的耦合标准;在多个应用程序之间使用接口接
2017-10-18 09:09:21 652 1
原创 Java_final修饰符总结
final修饰符:类变量:1.在声明该变量时指定初始值。2.在静态初始块中指定初始值。只能在这两个地方其中之一指定。实例变量:1.声明该实例变量时指定初始值。2.在非静态初始化块中指定初始值。3.在构造函数中指定初始值。必须在这三个地方指定初始值。 只能在初始化块或静态初始化块赋值,不能再初始化块或静态初始化块中声明,因为在初始化块或静态初始化块中声明相当于局部变量。 都不
2017-10-15 16:00:23 206
原创 Java_单例
public class Danlei { public static void main(String[] args) { Dan s1=Dan.getDan(); Dan s2=Dan.getDan(); System.out.println(s1==s2);//true实际上指向的是同一个对象,避免大量相同对象占用内存空间。 }}class Dan{ privat
2017-10-15 11:35:00 206
原创 Java_==与equals
1. ====严格要求两个变量指向同一对象。==不能比较没有父子关系的对象。public class EqualTest { public static void main(String[] args) { int it=65; float f1=65.0f; System.out.println(it==f1);//true char ch='A'; S
2017-10-15 10:18:06 209
原创 引用变量的强制类型转换_instanceof
引用变量只能调用它编译时的类型方法,而不能调用它运行时类型的方法。强制类型转换:1.基本类型之间的转换只能在数值类型之间进行。数值类型与布尔类型不能转换。2.引用类型之间的转换只能在具有继承关系的两个类型之间进行,如果试图把一个父类实例转换为一个子类类型,则这个对象必须实际上是子类类型(即编译时时父类类型,而运行时为子类类型),否则会ClassCastException。/
2017-10-13 22:02:11 654
原创 java_多态
public class duotai extends BaseClass{ public String book="钢铁是怎样炼成的"; public void test(){ System.out.println("子类覆盖父类的方法"); } public void sub() { System.out.println("子类的普通方法"); } public stati
2017-10-13 21:37:16 210
原创 java_this/super构造器
public class Base extends fu{ public String color; public Base(String color,String name, double size) { super(name,size);//调用父类的构造器 this.color=color; } public static void main(String[] args) {
2017-10-13 20:35:37 243
原创 java_this使用
public class thisShiyong { public void jump() { System.out.println("jump方法"); } public void run() { System.out.println("run方法"); //this.jump();// thisShiyong a=new thisShiyong(); a.jump();
2017-10-13 15:23:57 243
原创 java方法的参数传递机制
public class swap {public static void Swap(int a,int b) {int tmp=a;a=b;b=tmp;System.out.println("Swap方法里,a的值是 "+a+"; b的值是"+b);}public static void main(String[] args) {int a=6,b=9;Swa
2017-10-13 08:32:50 185
原创 java_学习小问题
在一个java文件中写多个类。不过只能有一个public所修饰的类,所以将A和B类前的public修饰符去掉即可,最终代码如下:public class Test{ public static void main(String args[]){ new B(); }}class A { public A
2017-10-12 19:15:00 217
转载 java.lang.ClassCastException(java强制类型转换异常)
ClassCastException,从字面上看,是类型转换错误,通常是进行强制类型转换时候出的错误。下面对产生ClassCastException异常的原因进行分析,然后给出这种异常的解决方法。这种异常是如何产生的呢?举一个比较形象的例子。Animal表示动物,Dog表示狗,是动物的子类,Cat表示猫,是动物的子类。看下面的代码:Animal a1 = new Dog()
2017-10-12 14:38:14 6770
原创 33. Search in Rotated Sorted Array
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).You are given a target value to search. If foun
2017-10-11 20:44:40 185
原创 二分查找_边界值的判定
278. First Bad VersionSuppose you have n versions [1, 2, ..., n] and you want to find out the first bad one, which causes all the following ones to be bad.给定一组数[1,2,...,n]如果一个数为bad则它后续的所有数都为ba
2017-10-11 17:35:06 1401
转载 441. Arranging Coins
问题:You have a total of n coins that you want to form in a staircase shape, where every k-th row must have exactly k coins.Given n, find the total number of full staircase rows that can b
2017-10-08 15:34:15 167
原创 349. Intersection of Two Arrays
1.采用两个hashset 时间复杂度为O(n)class Solution { public int[] intersection(int[] nums1, int[] nums2) { //use two hashset Set set=new HashSet<>(); Set interset=new HashSet<>(
2017-10-08 09:39:32 176
原创 Java 中 静态方法与非静态方法的区别
转载静态方法和实例方法的区别主要体现在两个方面:在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。下面几个例子展示了这一区别。
2017-10-07 15:30:04 3071
转载 二分查找算法
1.必须针对有序数组2.查找时间为logn3.如何取中间值以及边界判断三种基本版本:1.1 二分查找原始版--查找某个数的下标(任意一个)在有序数组中查找某个数,找到返回数的下标,存在多个返回任意一个即可,没有返回-1。所有程序采用左右均为闭区间,即函数中n为最后一个元素下标,而不是元素个数。典型代码如下:[java] view
2017-10-07 15:07:27 461
原创 167. Two Sum II - Input array is sorted
Given an array of integers that is already sorted in ascending order, find two numbers such that they add up to a specific target number.The function twoSum should return indices of the two number
2017-10-07 11:05:18 218
原创 50. Pow(x, n)
采用递归的方法,将Pow(x,n),转化为Pow(x,n/2)*Pow(x,n/2)。将时间从O(n)变成O(logn)关键是写出边界条件。并注意定义double类型的tmp=pow(x,n/2).对n的正负以及奇偶做判断。class Solution { public double myPow(double x, int n) { if (n==0) return
2017-10-07 10:30:22 230
转载 Java中的Double类型的精度计算
Java中的Double类型计算一、问题的提出:如果我们编译运行下面这个程序会看到什么?public class Test{ public static void main(String args[]){ System.out.println(0.05+0.01); System.out.println(1.0-0.42
2017-10-07 09:49:24 659
原创 367. Valid Perfect Square
Given a positive integer num, write a function which returns True if num is a perfect square else False.Note: Do not use any built-in library function such as sqrt.Example 1:Input: 16Return
2017-10-06 17:46:56 180
原创 69 Sqrt(x)_二分查找与牛顿方法
1.采用二分搜索方法注意如何取中点值,并且注意mid要写在while中每次都要更新:mid=lo+(hi-lo)/2,最小值加上最大减最小除2;注意如何返回非正常值,return hiclass Solution { public int mySqrt(int x) { int lo=1; int hi=x; int mid;
2017-10-06 17:03:46 281
原创 674. Longest Continuous Increasing Subsequence
求最长的连续增长子序列。这是一道简单题,可以用 cnt来记录当前的最长增长子序列,用res来记录最后结果最大的最长增长子序列。class Solution { public int findLengthOfLCIS(int[] nums) { int res=0,cnt=0; for (int i=0; i if(i=
2017-10-02 11:50:44 156
转载 70. Climbing Stairs
第一反应,递归求解,貌似很简单。但是不幸,超时[java] view plain copypublic int climbStairs1(int n) { if (n == 1 || n == 2) { return n; } return cli
2017-10-01 17:44:51 183
原创 155. Min Stack
class MinStack { /** initialize your data structure here. */ private Stack stack=new Stack private Stack minStack=new Stack public MinStack() { } publ
2017-10-01 16:36:53 202
原创 225. Implement Stack using Queues
使用队列来实现栈class MyStack { Queue queue; /** Initialize your data structure here. */ public MyStack() { this.queue=new LinkedList(); } /** Push element x onto sta
2017-10-01 16:04:16 230
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人