自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (10)
  • 收藏
  • 关注

原创 模式匹配

模式匹配欢迎转载,转载请注明与原文链接:1.BF(Brute Force)算法BF(Brute Force)算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。假设目标串S

2015-01-17 16:05:10 904

原创 输出单链表中倒数第k个结点(Java版)

题目:输入带头结点的单链表L,输出该单链表中倒数第k个结点。单链表的倒数第0个结点为该单链表的尾指针。要求只能遍历一次单链表。解题思路:如果不要求只能遍历一次单链表,我们可以先遍历一次单链表,求出它的结点的总个数n(包括头结点),所以单链表的结点是从倒数第n-1个到倒数第0个,然后再遍历一次单链表,遍历时访问的第n-k-1个结点就是该单链表中倒数第k个结点。现在要求只能遍历

2015-01-17 15:40:24 2902

原创 删除单链表某个结点(Java版)

题目:删除带头结点的单链表L中的结点p,p不是最后一个结点,要求时间复杂度为O(1)。解题思路:如果不要求时间复杂度为O(1),我们可以找出p的前驱结点,然后很容易就删除p。现在要求时间复杂度为O(1),因为p不是最后一个结点,知道结点p我们可以删除p的后继结点,那么我们可以把p的后继结点元素的值赋给p结点元素的值。ADT定义://单链表的结点类class LNo

2015-01-17 09:47:59 11409 1

原创 删除单链表中重复的值(Java版)

题目:删除带头结点的单链表中重复值的元素(即让每种值的元素只有一个)解题思路:用一个动态辅助存储数组,每次要向辅助数组中放入元素时,让辅助数组的长度加1,最长时与单链表一样长,设一个指针p,让它指向头结点,从单链表中第一个元素开始,将它的值放入辅助数组中,然后依次访问单链表后面的元素,用该元素的值与数组中所有已经被赋值的元素的值进行比较,如果不等于数组中任何元素的值,那么让p的

2015-01-17 09:31:17 4012

原创 单链表是否相交(Java版)

题目:有两个带头结点的单链表L1,L2,判断它们是否相交(它们中是否有相同的结点)解题思路:L1,L2中任何一个链表为空它们不相交因为单链表中可能有环,所以分3种情况讨论1、L1,L2中都没有环,那么可以通过判断它们中最后一个结点是否相同,来判断它们是否相交2、L1,L2中一个有环,一个没有环,那么它们一定不相交3、L1,L2中都有环,那么只有当它们的环相同时,它们才相

2015-01-16 21:42:17 1054

原创 单链表是否有环(Java版)

题目:判断一个带头结点的单链表L是否有环解题思路:咋看之下,这题还真不好解,于是又一些投机取巧的人,在访问单链表中元素的时候,用一个比较大的数N控制访问元素的个数,他们认为如果在访问到第N个元素之前有一个元素为null,那么单链表没有环,反之,单链表有环。他们的解释是都访问了这么多元素了,还没有一个元素为空,单链表很有可能有环,再加上一般单链表中的元素都不超过N个,所以单链表有环。对于

2015-01-16 21:29:06 5897 1

原创 单链表就地逆置(Java版)

题目:有一个线性表(a1,a2,a3,...,an),采用带头节点的单链表L存储,设计一个算法将其就地逆置,线性表变为(an,...a3,a2,a1)。所谓“就地”指辅助存储空间为O(1)。解题思路:如果是顺序存储的话,我们很容易想到解题思路,利用1个辅助变量让第1个元素与第n个元素交换,然后再利用这个辅助变量让第2个元素与第n-1个元素交换,...最后利用这个辅助变量让第

2015-01-16 15:29:15 10556

原创 在字符串中删除特定的字符

题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”I am lavor_zl.”和”I love you.”,则删除之后的第一个字符串变成”amar_z"。要求相对于第一个字符串的长度n时间复杂度为O(n)。解题思路:用一个bool数组保存是否在第二个字符串中出现的所有字符,数组下标表示字符,这个数组的长度为256,因为C/C++中字符总共有256个。遍历第

2015-01-15 20:13:21 1895

原创 字符串中第一个只出现一次的字符

题目:在一个字符串中找到第一个只出现一次的字符。比如"lavor_zl"第一个只出现一次的字符是'a'。解题思路:C/C++字符使用Ascii编码,一个字符占一个字节即可以表示2的8次方个数,那么C/C++字符可以表示的256个字符,因此可以用一个256的数组来保存各个字符出现的次数,当然256个字符的Ascii值是0-255之间的所有数,而且'\0'的Ascii值0,所以可以用数

2015-01-15 18:17:34 1002

原创 翻转句子中单词的顺序

题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。比如输入"I love you.",输出"you. love I"。解题思路:我们可以先翻转整个字符串,然后再翻转字符串中的每个单词。比如"I love you."翻转整个字符串后得到".uoy evol I",再翻转字符串中的每一个单词得到"you.

2015-01-15 15:54:23 1047

原创 回文字符串

题目:判断一个字符串是不是回文字符串,所谓回文字符串,就是指字符串的第i个字符与字符串的第n+1-i个字符相等,i小于等n/2。比如"abcba","abba"都是回文字符串。解题思路:比较字符串第i个字符与字符串的第n+1-i个字符相等,i小于等n/2,如果不相等就返回false,如果循环执行完了还没有返回的话就返回true。算法实现:bool isPalin

2015-01-15 10:50:44 1005

原创 输出单链表中倒数第k个结点

题目:输入带头结点的单链表L,输出该单链表中倒数第k个结点。单链表的倒数第0个结点为该单链表的尾指针。要求只能遍历一次单链表。解题思路:如果不要求只能遍历一次单链表,我们可以先遍历一次单链表,求出它的结点的总个数n(包括头结点),所以单链表的结点是从倒数第n-1个到倒数第0个,然后再遍历一次单链表,遍历时访问的第n-k-1个结点就是该单链表中倒数第k个结点。现在要求只能遍历一次单链

2015-01-15 10:10:54 2041

原创 左旋转字符串

题目:左旋转字符串,定义字符串的左旋转操作:把前面若干个字符移动到尾部。比如把"lavor_zl"左旋转3位得"or_zllav"。要求时间对长度为n的字符串操作复杂度为O(n),辅助内存为O(1)。解题思路:定义一个整型参数count,用它表示旋转的位数,当左旋转的位数大于等于字符串长度时,可以用它除以字符串长度求余来表示旋转的位数,因为左旋转字符串长度的整数倍,字符串保持不变。

2015-01-14 21:31:52 943

原创 字符串转换成整型

题目:将字符串转换成整型,比如输入“123”,输出123。 解题思路:利用每一个0-9数字字符对应的Ascii减去48就得到了一个0-9的整型数字。用前i-1位表示的整型数字乘以10加上第i位表示的数字,就可以得到转换成的整型了。注意字符串第1个字符也可以是+或-。当字符串第1个字符是-时,用前i-1位表示的整型数字乘以10减去第i位表示的数字,就可以得到转换成的整型了。这样的话,

2015-01-14 09:47:44 3609

原创 字符串翻转

题目:将字符串翻转,比如输入"lavor_zl",输出“lz_roval”。解题思路:类似于顺序表的逆置,假设字符串长度为n,那么交换第1个与第n个字符,然后交换第2个和第n-1个字符,类似的交换其他的字符,一共交换n/2次算法实现:void reverseStr(char str[]){ if(str==NULL) return; int n=0;//用n

2015-01-14 09:33:04 1270

原创 删除单链表某个结点

题目:删除带头结点的单链表L中的结点p,p不是最后一个结点,要求时间复杂度为O(1)。解题思路:如果不要求时间复杂度为O(1),我们可以找出p的前驱结点,然后很容易就删除p。现在要求时间复杂度为O(1),因为p不是最后一个结点,知道结点p我们可以删除p的后继结点,那么我们可以把p的后继结点元素的值赋给p结点元素的值。ADT定义如下#define ElemType int

2015-01-13 16:31:45 2559 1

原创 删除单链表中重复的值

题目:删除带头结点的单链表中重复值的元素(即让每种值的元素只有一个)解题思路:用一个动态辅助存储数组,每次要向辅助数组中放入元素时,让辅助数组的长度加1,最长时与单链表一样长,设一个指针p,让它指向头结点,从单链表中第一个元素开始,将它的值放入辅助数组中,然后依次访问单链表后面的元素,用该元素的值与数组中所有已经被赋值的元素的值进行比较,如果不等于数组中任何元素的值,那么让p的ne

2015-01-13 10:54:22 2171

原创 单链表是否相交

题目:有两个带头结点的单链表L1,L2,判断它们是否相交(它们中是否有相同的结点)解题思路:L1,L2中任何一个链表为空它们不相交因为单链表中可能有环,所以分3种情况讨论1、L1,L2中都没有环,那么可以通过判断它们中最后一个结点是否相同,来判断它们是否相交2、L1,L2中一个有环,一个没有环,那么它们一定不相交3、L1,L2中都有环,那么只有当它们的环相同时,它们才相

2015-01-12 16:39:58 887

原创 单链表是否有环

题目:判断一个带头结点的单链表L是否有环解题思路:咋看之下,这题还真不好解,于是又一些投机取巧的人,在访问单链表中元素的时候,用一个比较大的数N控制访问元素的个数,他们认为如果在访问到第N个元素之前有一个元素为null,那么单链表没有环,反之,单链表有环。他们的解释是都访问了这么多元素了,还没有一个元素为空,单链表很有可能有环,再加上一般单链表中的元素都不超过N个,所以单链表有环。对于

2015-01-11 17:14:18 1196

原创 Java多线程

1.线程的创建与启动在Java中,多线程的实现有两种方式:继承java.lang.Thread类实现java.lang.Runnable接口1.1继承Thread类创建线程继承Thread类创建并启动线程的步骤:1、定义Thread的子类,并重写该类的run()方法,run()方法的方法体就表示线程需要完成的任务。run()被称为线程执行体。2、创建Thread的子

2015-01-11 16:21:28 881

原创 单链表就地逆置

题目:有一个线性表(a1,a2,a3,...,an),采用带头节点的单链表L存储,设计一个算法将其就地逆置,线性表变为(an,...a3,a2,a1)。所谓“就地”指辅助存储空间为O(1)。解题思路:如果是顺序存储的话,我们很容易想到解题思路,利用1个辅助变量让第1个元素与第n个元素交换,然后再利用这个辅助变量让第2个元素与第n-1个元素交换,...最后利用这个辅助变量让第n/2个元素与第

2015-01-08 18:14:47 13716 3

原创 Java序列化

1.概述通过序列化机制,我们可以把Java内存中的对象转换成二进制字节流,这样就可以把Java对象存储到磁盘中,或者在网络中传输Java对象。1.1序列化的含义和意义序列化机制允许将实现序列化的Java对象转换成字节序列,这些自己序列可以保存在磁盘上,或通过网络传输,以备以后重新恢复原来的对象。序列化机制使得对象可以脱离程序的运行而单独存在。对象的序列化(Serilize)指将

2015-01-05 15:01:54 1268

Android其它新控件

Android其它新控件,Drawerlayout(抽屉布局),SwipeRefreshLayout(滑动刷新布局)的基本使用

2016-05-02

一个Activity掌握Design新控件

一个Activity掌握Design新控件,TextInputLayout(文本输入布局),TabLayout(选项卡布局),Snackbar,FloatingActionButton(浮动按钮), NavigationView,AppBarLayout,CoordinatorLayout,CollapsingToolbarLayout(折叠工具栏布局)。

2016-05-02

一个Activity掌握Android5.0新控件

一个Activity掌握Android5.0新控件,讲解RecyclerView,Patelle,CardView,Toolbar,RippleDrawable基本使用方法。

2016-04-28

一个Activity掌握Android4.0新控件

一个Activity掌握Android4.0新控件: Android4.0新控件Switch,Space,GridLayout,PopupMenu,TextureView的简单使用。

2016-04-27

WiFi调试工具WiFiADB

Android WiFi调试工具

2016-04-17

Android反编译器jadx

Android反编译工具jadx

2016-04-16

Thinking in Java 3th Edition习题及答案

Thinking in Java 3th Edition习题及答案:结合Thinking in Java 这本书可以很系统地学习JAVA知识

2012-01-10

Thinking in Java

Thinking in Java 4th Edition:国外学习JAVA的经典教材,希望对想学好JAVA的人有帮助

2012-01-10

DOS命令大全

DOS命令大全,各种DOS命令都有,让你更好操作DOS界面

2012-01-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除