1. 程式人生 > >java常見演算法題目

java常見演算法題目

轉載自:http://blog.csdn.net/zhaoqianjava/article/details/6858427

1. 判斷身份證:要麼是15位,要麼是18位,最後一位可以為字母,並寫程式提出其中的年月日。

我們可以用正則表示式來定義複雜的字串格式,

(\d{17}[0-9a-zA-Z]|\d{14}[0-9a-zA-Z])可以用來判斷是否為合法的15位或18位身份證號碼。

因為15位和18位的身份證號碼都是從7位到第12位為身份證為日期型別。這樣我們可以設計出更精確的正則模式,使身份證號的日期合法,這樣我們的正則模式可以進一步將日期部分的正則修改為[12][0-9]{3}[01][0-9][123][0-9]

,當然可以更精確的設定日期。

在jdk的java.util.Regex包中有實現正則的類,Pattern和Matcher。以下是實現程式碼:

  1. importjava.util.regex.Matcher;  
  2. importjava.util.regex.Pattern;  
  3. public classRegexTest {  
  4.          publicstaticvoid main(String[] args){  
  5.                    // 測試是否為合法的身份證號碼
  6.                    String[] strs = {"130681198712092019"
    "13068119871209201x",  
  7.                                      "13068119871209201","123456789012345""12345678901234x",  
  8.                                      "1234567890123"};  
  9.                    Pattern p1 =Pattern.compile("(\\d{17}[0-9a-zA-Z]|\\d{14}[0-9a-zA-Z])");  
  10.                    for (int i = 0; i <strs.length; i++) {  
  11.                             Matcher matcher =p1.matcher(strs[i]);  
  12.                             System.out.println(strs[i]+ ":" + matcher.matches());  
  13.                    }  
  14.                    Pattern p2 =Pattern.compile("\\d{6}(\\d{8}).*"); // 用於提取出生日字串
  15.                    Pattern p3 =Pattern.compile("(\\d{4})(\\d{2})(\\d{2})");// 用於將生日字串進行分解為年月日
  16.                    for (int i = 0; i <strs.length; i++) {  
  17.                             Matcher matcher =p2.matcher(strs[i]);  
  18.                             boolean b =matcher.find();  
  19.                             if (b) {  
  20.                                      String s =matcher.group(1);  
  21.                                      Matchermatcher2 = p3.matcher(s);  
  22.                                      if(matcher2.find()) {  
  23.                                                System.out  
  24.                                                                  .println("生日為" + matcher2.group(1) + "年"
  25.                                                                                     +matcher2.group(2) + "月"
  26.                                                                                     +matcher2.group(3) + "日");  
  27.                                      }}}}}  

2編寫一個程式,將a.txt檔案中的單詞與b.txt檔案中的單詞交替合併到c.txt檔案中,a.txt檔案中的單詞用回車符分隔,b.txt檔案中用回車或空格進行分隔。

答:

  1. package cn.itcast;  
  2. import java.io.File;  
  3. import java.io.FileReader;  
  4. import java.io.FileWriter;  
  5. publicclass MainClass{  
  6.        publicstatic voidmain(String[] args) throws Exception{  
  7.               FileManager a = newFileManager("a.txt",newchar[]{'\n'});  
  8.               FileManager b = newFileManager("b.txt",newchar[]{'\n',' '});             
  9.               FileWriter c = newFileWriter("c.txt");  
  10.               String aWord = null;  
  11.               String bWord = null;  
  12.               while((aWord =a.nextWord()) !=null ){  
  13.                      c.write(aWord+ "\n");  
  14.                      bWord =b.nextWord();  
  15.                      if(bWord !=null)  
  16.                             c.write(bWord+ "\n");  
  17.               }  
  18.               while((bWord =b.nextWord()) != null){  
  19.                      c.write(bWord+ "\n");  
  20.               }        
  21.               c.close();  
  22.        }  
  23. }  
  24. class FileManager{  
  25.        String[] words = null;  
  26.        int pos = 0;  
  27.        public FileManager(Stringfilename,char[] seperators) throws Exception{  
  28.               File f = newFile(filename);  
  29.               FileReader reader =new FileReader(f);  
  30.               char[] buf = newchar[(int)f.length()];  
  31.               int len =reader.read(buf);  
  32.               String results = newString(buf,0,len);  
  33.               String regex = null;  
  34.               if(seperators.length>1 ){  
  35.                      regex ="" + seperators[0] + "|" + seperators[1];  
  36.               }else{  
  37.                      regex ="" + seperators[0];  
  38.               }  
  39.               words =results.split(regex);  
  40.        }  
  41.        public String nextWord(){  
  42.               if(pos ==words.length)  
  43.                      returnnull;  
  44.               return words[pos++];  
  45.        }  
  46. }  

3、編寫一個程式,將d:\java目錄下的所有.java檔案複製到d:\jad目錄下,並將原來檔案的副檔名從.java改為.jad。

(大家正在做上面這道題,網上遲到的朋友也請做做這道題,找工作必須能編寫這些簡單問題的程式碼!)

答:listFiles方法接受一個FileFilter物件,這個FileFilter物件就是過慮的策略物件,不同的人提供不同的FileFilter實現,即提供了不同的過濾策略。

  1. import java.io.File;  
  2. import java.io.FileInputStream;  
  3. import java.io.FileOutputStream;  
  4. import java.io.FilenameFilter;  
  5. import java.io.IOException;  
  6. import java.io.InputStream;  
  7. import java.io.OutputStream;  
  8. publicclass Jad2Java {  
  9.        publicstatic voidmain(String[] args) throws Exception {  
  10.               File srcDir = new File("java");  
  11.               if(!(srcDir.exists()&& srcDir.isDirectory()))  
  12.                             thrownew Exception("目錄不存在");  
  13.               File[] files =srcDir.listFiles(  
  14.                      newFilenameFilter(){  
  15.                                    publicboolean accept(File dir, String name) {  
  16.                                           returnname.endsWith(".java");  
  17.                                    }  
  18.                             }  
  19.               );  
  20.               System.out.println(files.length);  
  21. 相關推薦

    java常見演算法題目

    轉載自:http://blog.csdn.net/zhaoqianjava/article/details/6858427 1. 判斷身份證:要麼是15位,要麼是18位,最後一位可以為字母,並寫程式提出其中的年月日。 我們可以用正則表示式來定義複雜的字串格

    收藏版:java常見面試題目精講視頻教程!

    收藏版:java常見面試題目精講視頻教程! 首先給大家愛介紹一下java的就業前景,Java語言是一門很實用的語言,在互聯網的應用十分廣泛,目前采用JAVA語言開發的網站也越來越多,所以對Java開發人才的需求量也是倍增。從人才需求方面看,軟件開發是當下的發展趨勢,而我國的軟件開發人才極為缺

    一些常見演算法題目

    題目描述 用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。 class Solution { public: void push(int node) { stack1.push(node); } int pop() { int i

    JAVA常見設計題目及其提高P3: 判斷 101-200 之間有多少個素數,並輸出所有素數

    主程式碼 /* * 3、 判斷 101-200 之間有多少個素數,並輸出所有素數 */ public class P3 { private int a; public P3() { super(); // TODO Auto-generated constructor stub

    java常見面試題目(一)

    過程 重寫 font ble body 釋放 就會 t對象 使用 在大四實習階段,秋招的時候,面試了很多家公司,總結常見的java面試題目:(答案可以自己百度) 1、你所用oracle的版本號是多少? 2、tomcat修改8080端口號的配置文件是哪個? 3、mybati

    java常見面試題目(三)

    1、jsp的內建物件。  JSP中一共預先定義了9個這樣的物件,分別為:request、response、session、application、out、pagecontext、config、page、exception 2、session與cookie的作用與區別:   cookie資料存放

    Java常見演算法之二分法查詢演算法詳解

    一、簡介 二分法查詢,是在已經排好序的序列中,定義一個起始位置start(即序列第一個元素)和一個終止位置end(即序列最後一個元素),通過mid=(start+end)/2計算出中間位置,通過待查詢元素與mid中間位置的元素進行比較,如果待查詢元素比中間位置mid對應的值

    java常見練習題題目:利用條件運算子的巢狀來完成此題:學習成績>=90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。

    題目:題目:利用條件運算子的巢狀來完成此題:學習成績>=90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。 首先定義一個成績,然後根據成績進行判斷,如果不滿足在判斷中再加入判斷,完成運算子巢狀判斷,即: 最終程式碼 public cl

    收藏版:java常見面試題目精講視訊教程!

    首先給大家愛介紹一下java的就業前景,Java語言是一門很實用的語言,在網際網路的應用十分廣泛,目前採用JAVA語言開發的網站也越來越多,所以對Java開發人才的需求量也是倍增。從人才需求方面看,軟體開發是當下的發展趨勢,而我國的軟體開發人才極為缺乏,其中java人才缺口最大,對java軟體工程師的需求達到

    C#常見演算法題目(面試準備)

    1.寫出冒泡,選擇,插入排序演算法。 //氣泡排序publicclass bubblesorter    ...{        publicvoid sort(int[] list)        ...{            int i, j, temp;     

    Java常見的面試題目___來著<Java面試寶典>

    輕量 長度 很大的 null HA 垃圾 效率 類型 shm 1、 error和 exception有什麽區別?   error 表示恢復不是不可能但很困難的一種嚴重問題。比如說內存溢出。不可能指望程序能處理這樣的情況。   exception 表示一種設計或實現問題。

    java面試/筆試題目Java常見集合(持續更新中)

    宣告:題目大部分來源於Java後端公眾號,有些個人整理,但答案皆為個人整理,僅供參考。 目錄 Java中的集合 List 和 Set 區別 1.Set:集合中的物件不按特定方式排序(針對記憶體地址來說,即非線性),並且沒有重複物件。它的有些實現類能對集合中的物件按特定方式排序。

    Java 常見的排序演算法

    這篇文章主要介紹常見的排序演算法,圖片來源於網路,java程式碼實現為本人編寫,如若有不當之處還望指正。 分類 1)插入排序(直接插入排序、希爾排序) 2)交換排序(氣泡排序、快速排序) 3)選擇排序(直接選擇排序、堆排序) 4)歸併排序 5)分配排序(基數排序) 所需

    Java常見加密和解密演算法

    1:加密和解密輔助工具類: /** * byte hex utility class **/ public class ByteHexUtils { private static final String HEX_STR = "0123456789

    Java常見排序演算法之選擇排序詳解

    一、簡介 選擇排序,就是每一趟從待排序的序列中選出最小的元素,順序放在已排好序的序列最後,直到全部序列排序完畢。簡單理解就是假設一個最小值,將剩餘的未排序的序列與假設的最小值進行比較,如果發現比假設的最小值還小的值,那麼將它與假設的最小值調換位置。 二、排序思路 排序思

    Java常見排序演算法之插入排序詳解

    一、簡介 插入排序,就是假定一個參考值,假設該參考值左邊的元素都有序,那麼從該元素開始從後往前挨個查詢,如果找到比參考值大的數,那麼就將這個大的數後移,如果未找到比參考值大的數,說明不用移動元素。迴圈比較,這樣經過比較後移之後就會空出下標為0的位置,用於存放這個參考值。

    java按行讀取並存到陣列(轉換成任意型別)(演算法題目常用)

    做用java做演算法時,需要進行.txt檔案的讀寫問題。 思考:現在知道如何用讀每行的資料的,怎麼把他們分開? //從檔案中讀取 File inFile=new File("E:\\input.txt"); BufferedReader br=new BufferedR

    連結串列及常見演算法(java實現)

    連結串列及常見演算法(java實現) 注意:本文中的連結串列預設都是帶頭節點的。 1.連結串列的實現 實現很簡單,只有兩個值,一個data,一個指向下一個節點的指標。由於java語言的特點,這裡的指標其實是引用,但為了方便敘述,下文全部稱為指標。 public class L

    java排序演算法(你必須會的常見排序演算法

    1、排序演算法說明 1、排序的定義 對一序列物件根據某個關鍵字進行排序 2、術語說明 穩定:如果a原本在b前面,而a=b,排序之後a仍然在b的前面; 不穩定:如果a原本在b的前面,而a=b,排序之後a可能會出現在b的後面; 內排序:所有排序操作都在記憶體中完成;

    Java常見的幾種排序演算法-插入、選擇、冒泡、快排、堆排等

    本文就是介紹一些常見的排序演算法。排序是一個非常常見的應用場景,很多時候,我們需要根據自己需要排序的資料型別,來自定義排序演算法,但是,在這裡,我們只介紹這些基礎排序演算法,包括:插入排序、選擇排序、氣泡排序、快速排序(重點)、堆排序、歸併排序等等。看下圖: 給定陣