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。以下是實現程式碼:
- importjava.util.regex.Matcher;
- importjava.util.regex.Pattern;
- public classRegexTest {
- publicstaticvoid main(String[] args){
- // 測試是否為合法的身份證號碼
-
String[] strs = {"130681198712092019"
- "13068119871209201","123456789012345", "12345678901234x",
- "1234567890123"};
- Pattern p1 =Pattern.compile("(\\d{17}[0-9a-zA-Z]|\\d{14}[0-9a-zA-Z])");
-
for (int i = 0; i <strs.length; i++) {
- Matcher matcher =p1.matcher(strs[i]);
- System.out.println(strs[i]+ ":" + matcher.matches());
- }
- Pattern p2 =Pattern.compile("\\d{6}(\\d{8}).*"); // 用於提取出生日字串
- Pattern p3 =Pattern.compile("(\\d{4})(\\d{2})(\\d{2})");// 用於將生日字串進行分解為年月日
- for (int i = 0; i <strs.length; i++) {
- Matcher matcher =p2.matcher(strs[i]);
- boolean b =matcher.find();
- if (b) {
- String s =matcher.group(1);
- Matchermatcher2 = p3.matcher(s);
- if(matcher2.find()) {
- System.out
- .println("生日為" + matcher2.group(1) + "年"
- +matcher2.group(2) + "月"
- +matcher2.group(3) + "日");
- }}}}}
2編寫一個程式,將a.txt檔案中的單詞與b.txt檔案中的單詞交替合併到c.txt檔案中,a.txt檔案中的單詞用回車符分隔,b.txt檔案中用回車或空格進行分隔。
答:
- package cn.itcast;
- import java.io.File;
- import java.io.FileReader;
- import java.io.FileWriter;
- publicclass MainClass{
- publicstatic voidmain(String[] args) throws Exception{
- FileManager a = newFileManager("a.txt",newchar[]{'\n'});
- FileManager b = newFileManager("b.txt",newchar[]{'\n',' '});
- FileWriter c = newFileWriter("c.txt");
- String aWord = null;
- String bWord = null;
- while((aWord =a.nextWord()) !=null ){
- c.write(aWord+ "\n");
- bWord =b.nextWord();
- if(bWord !=null)
- c.write(bWord+ "\n");
- }
- while((bWord =b.nextWord()) != null){
- c.write(bWord+ "\n");
- }
- c.close();
- }
- }
- class FileManager{
- String[] words = null;
- int pos = 0;
- public FileManager(Stringfilename,char[] seperators) throws Exception{
- File f = newFile(filename);
- FileReader reader =new FileReader(f);
- char[] buf = newchar[(int)f.length()];
- int len =reader.read(buf);
- String results = newString(buf,0,len);
- String regex = null;
- if(seperators.length>1 ){
- regex ="" + seperators[0] + "|" + seperators[1];
- }else{
- regex ="" + seperators[0];
- }
- words =results.split(regex);
- }
- public String nextWord(){
- if(pos ==words.length)
- returnnull;
- return words[pos++];
- }
- }
3、編寫一個程式,將d:\java目錄下的所有.java檔案複製到d:\jad目錄下,並將原來檔案的副檔名從.java改為.jad。
(大家正在做上面這道題,網上遲到的朋友也請做做這道題,找工作必須能編寫這些簡單問題的程式碼!)
答:listFiles方法接受一個FileFilter物件,這個FileFilter物件就是過慮的策略物件,不同的人提供不同的FileFilter實現,即提供了不同的過濾策略。
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.FilenameFilter;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- publicclass Jad2Java {
- publicstatic voidmain(String[] args) throws Exception {
- File srcDir = new File("java");
- if(!(srcDir.exists()&& srcDir.isDirectory()))
- thrownew Exception("目錄不存在");
- File[] files =srcDir.listFiles(
- newFilenameFilter(){
- publicboolean accept(File dir, String name) {
- returnname.endsWith(".java");
- }
- }
- );
- System.out.println(files.length);
-
相關推薦
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常見的幾種排序演算法-插入、選擇、冒泡、快排、堆排等
本文就是介紹一些常見的排序演算法。排序是一個非常常見的應用場景,很多時候,我們需要根據自己需要排序的資料型別,來自定義排序演算法,但是,在這裡,我們只介紹這些基礎排序演算法,包括:插入排序、選擇排序、氣泡排序、快速排序(重點)、堆排序、歸併排序等等。看下圖: 給定陣