算法思考
justinavril
微笑猴子
展开
-
Java实现字符串倒序输出的几种方法
1. 最容易想到的估计就是利用String类的toCharArray(),再倒序输出数组的方法了。 import javax.swing.JOptionPane;public class ReverseString { public static void main (String args[]){ String originalString; String re原创 2008-07-27 15:08:00 · 22206 阅读 · 14 评论 -
该怎么输出log?!
最近,经常会碰到一些这样的脚本:脚本的功能是去删除一些相关的系统配置。在系统里,有一类配置A,脚本script_removeA的功能就是删除A。运行script_removeA,成功删除A,返回true。但是,这里就有一个潜在的问题,如果第二次运行该脚本,该如何输出运行结果?删除配置的话,配置已经没有了,实际上没有做任何操作。那是不是要输出false呢?这个时候,我觉得应该从脚本的功能出发,脚本的原创 2011-11-03 21:00:36 · 2291 阅读 · 0 评论 -
关于返回二维数组排序后序号数组的问题求解
这个题目挺拗口的,还是先来看这个问题的描述吧!详细也可以查看这个帖子《facebook一道面试题,求效率算法》。因为本文是一边想一边写的,难免啰嗦,闭门造车和错误,请不吝赐教!/*矩阵A68 36 2259 77 3981 20 17将矩阵A每列排序之后(升序排列)应该得到的矩阵是:矩阵B:59 20原创 2009-12-14 12:52:00 · 3453 阅读 · 2 评论 -
Java中的排列组合问题(一)
之前的blog《递归问题(二)》中,提到了一种用递归算法实现的数组的全排列功能。所谓全排列,数学上的定义是:从n个不同的物体中选出m个进行排列的方法数称为排列, 当m=n时称为全排列。比如一组数1、2、3,那么全排列为:123、132、213、231、312、321。数学上,也有一套理论来计算这种个m和n的排列问题,比如3个数的全排列就有P(3)=3*2*1=6种。全排列的算法这里再贴一下:p原创 2009-05-14 05:06:00 · 5926 阅读 · 4 评论 -
找出给定数组中第一个不重复的数组元素
1. 不用Java的API,只是利用循环查找需要的数据元素。public class FindUnique { private static void findUniqueMember(char[] array){ System.out.print("The array includes: "); System.out.pr原创 2008-07-28 15:38:00 · 1670 阅读 · 2 评论 -
将给定数组按首字符不同排列
给定一个全有数字组成的字符串数组{2, 13, 24, 51, 19},输出效果是:13, 192, 2451主要是利用String类的一些方法实现。//实现将诸如:{1, 12, 21, 148, 27, 34},按首个字符分行输出的功能://13, 19//2, 24//51public class JudgeAn原创 2008-07-29 11:09:00 · 709 阅读 · 0 评论 -
递归问题(一)
所谓递归问题,可以分成两部分来理解:一是基本问题,也可以称之为原始问题,比较好解决;二是后续问题,比较复杂,但是和原始问题比较类似,可以调用自身的一个新的副本去解决它。最简单的可以归为递归问题的就是阶乘,1的阶乘我们知道是1,2的阶乘为2*1=2*1!,而3的阶乘又是3*2!...这样我们就能够知道如何用递归去实现n的阶乘了。public class Factorial { pub原创 2008-08-01 14:24:00 · 4462 阅读 · 0 评论 -
以单词为单位倒序输出一个字符串
看到坛子里有人提出这么一个问题,如何将"I am a programmer"输出成"remmargorp a ma I"。注意:相邻两个单词的空格数一次是1个,2个,3个。1. 利用split()方法实现。public class TestSplit { public static void main (String args[]){ String str1 = "I原创 2008-07-31 13:08:00 · 3527 阅读 · 5 评论 -
递归问题(二)
在前文《递归问题一》中简单介绍了几个典型的递归问题。前几天看到一个人在论坛里问,如何实现一个字符串数组的全排列问题,底下人都说可以用递归方法实现,我想了会,没想出来,不过有人贴出了他的代码,我这里借用一下: public class AllSort{ public static void main(String[] args) { char buf[]={a原创 2008-08-02 15:49:00 · 9832 阅读 · 12 评论 -
统计Java源文件的代码行
废话不多说,直接上代码和程序运行截图:import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; import javax.swing.*; import javax.swing.table.DefaultTableModel; public class Co原创 2008-09-13 12:54:00 · 1614 阅读 · 2 评论 -
Java中的排序(一)
在编程的过程中,我们必不可少的会遇到排序问题。好在Java中,有些类的方法已经给排序提供了很好的解决办法了;另外实现某些能够实现排序的接口也可以达到排序的目的。当然了,你也可以直接写排序算法。不过在这一篇blog里,还是主要介绍已有的方法和接口。首先当然是我们很熟悉的Arrays.sort()方法了。废话不多说,看代码:import java.util.*;public c原创 2008-09-13 20:47:00 · 2604 阅读 · 3 评论 -
遍历文件夹内的所有文件的小程序
经常看到论坛里有人问到怎么去看文件夹下面有多少个文件和文件夹的问题,我想这个应该不难实现,有两种办法,一种是递归实现,一种是常规的循环实现。请先看递归实现的代码:import java.io.*;import java.util.*;public class ListFileRecursion{ public static void listFile(原创 2008-09-20 16:56:00 · 2929 阅读 · 7 评论 -
正则表达式(一)
最近在论坛里问正则表达式的特别多,我对这方面了解的也不是很多,也就是顺便学习学习。还是引用论坛里的一个问题吧:如何将下面这段字符串分离出IP地址,连接时间和链接。String str = "doctor_access_log.1177977600:65.55.210.14 - - [01/May/2007:00:00:26 -0500] /"GET /estil.strawn HTTP原创 2008-09-27 20:05:00 · 733 阅读 · 0 评论 -
用数组实现一个简单的堆栈
堆栈(Stack)是一个比较普通,而又特别的数据结构。合理利用它的先进后出(FILO),有时候会有一些比较好的作用。这里面不多讲的它的应用,而是举一个很简单的例子来表明它的FILO特性,并用数组来实现一个堆栈算法。请看代码:import java.util.*; public class TestStack{ public static void mai原创 2008-10-19 20:12:00 · 1801 阅读 · 0 评论 -
判断一个数组中出现次数最多的元素
这个问题在CSDN上的上镜率比较高,就是写一个程序判断一个数组中出现次数最多的那个元素。我给出的代码是:import java.util.*;public class FindMostEle { private static LinkedHashMap map; public static LinkedHashMap mostEle(String原创 2008-10-19 22:24:00 · 3472 阅读 · 1 评论 -
Int型和byte数组,以及long型和byte数组之间的相互转换
续:几个典型问题的求解 的第一个问题。直接贴代码:public class ExchangeIntToByte { static byte[] bArray; public static void intToByte(int a){ bArray = new byte[4]; for(int i=0; i<bArray.length; i++){原创 2009-04-16 02:22:00 · 1875 阅读 · 0 评论 -
几个典型问题的求解
1. 如何将整形数转化到对应的字节数组中。都知道字节是8位的,而Java中整形,也就是int型的变量是32位的,因此这个”对应“也就是要保存到长度为4的字节数组中。那么下面来考虑如何转换。看代码: public class IntToByte { public static void main(String args[]){ int a = 1000;原创 2009-04-03 06:57:00 · 710 阅读 · 0 评论 -
不用比较运算符,判断int型的a,b两数的大小
看到一个人的帖子,想了一下,然户发了一个帖子。原帖见:看到一个面试题,大家来讨论下!其实出现问题的情况,只存在于异号两数想减使得结果超过了int型的最大或最小值,因此导致了符号位丢失。所以在这个基础上想到了转型。就是把int型转成long型的,那么符号位就保存在了第64位上了,同时也不会丢失符号位。贴代码(借鉴了一个网友的方法,用数组来存结果,这样就不用==比较符了。这个方法在Core Jav原创 2009-04-29 23:33:00 · 4031 阅读 · 0 评论