字符串筆試題:在字符串中找出連續最長的數字串

分析思路:java

(1)遍歷整個字符串,要用到for(int i = 0;i<str.length;i++){};數組

(2)由於數字串有多長預先並不知道,會不斷加長數字串,因此要用StringBuffer。StringBuffer對象的內容能夠修改;而String對象一旦產生後就不能夠被修改,從新賦值實際上是兩個對象。app

(3)一個用來存儲以找到的最長數字串,另外一個用例存儲當前正在處理中的字符串,兩者要比較出來誰更長。spa

(4)數字串長度值做爲標誌位,要始終保持 數字串長度值 和 數字串 的同步變化。code

import java.util.Scanner;

public class Test1{
    public static int findMaxString(String inString){
        int nowStringLength = 0;
        StringBuffer nowStringBuffer = null;
        
        int maxStringLength = 0;
        StringBuffer maxStringBuffer = null;
        
        for(int i =0;i<inString.length();i++){
            if(inString.charAt(i)>=48&&inString.charAt(i)<=57){//char爲字符型,實際上也是一種整數類型,16位無符號整數類型。所以能夠直接與數值比較大小,加減乘除 if(nowStringLength==0){//須要判斷nowStringLength是否等於0,若是等於0,說明nowStringBuffer爲null,須要初始化
                    nowStringBuffer = new StringBuffer(inString.valueOf(inString.charAt(i)));
                    nowStringLength++;
                }else{//nowStringLength不等於0,說明此時nowStringBuffer不爲null,無需初始化,直接append(char)便可繼續添加連續的數字
                    nowStringBuffer.append(inString.charAt(i));
                    nowStringLength++;//StringLength做爲標誌位,保持與StringBuffer的同步變化
                }
                if(nowStringLength>maxStringLength){//每處理一個字符,將歷史最長值與當前連續最長值進行比較
                    maxStringLength = nowStringLength;
                    maxStringBuffer = nowStringBuffer;
                }
            }else{
                nowStringLength = 0;
                nowStringBuffer = null;
            }
        }
        System.out.println(maxStringBuffer);
        return maxStringLength;
    }
    public static void main(String[] args){
     Scanner sc
= new Scanner(System.in);
     while(sc.hasNextLine()){
  String inString = sc.nextLine();
       System.out.println(findMaxString(inString));
     }
  }
}

主要方法:對象

(1)StringBufferblog

  初始化  StringBuffer sb = null;索引

       sb = new StringBuffer(String變量);字符串

  方法     append(char變量),在StringBuffer末尾添加一個字符同步

 

(2)String

  方法    length(),返回字符串長度,有多少個字符

        charAt(index),返回該索引所對應的字符,相似於數組

        valueOf(基本數據類型/對象),返回String

        valueOf(char[] data),將 char 數組 data 轉換成字符串

        valueOf(char[] data, int offset, int count) ,將 char 數組 data 中 由 data[offset] 開始取 count 個元素 轉換成字符串 

(3)Scanner

  初始化 Scanner sc = new Scanner(System.in);

  方法    nextLine(),將DOS窗口的輸入(以Enter鍵爲界)所有讀入,返回String

        hasNextLine(),返回輸入源中是否還有下一行

(4)另外Char能夠直接和ASCII碼比較。

學會了找出字符串中最長的數字串,觸類旁通的,找出其餘ASCII區間的字符串也跳不出以上經常使用的方法。

另外若是要求將字符串中全部的數字串都找出來並要操做,就須要學會利用容器存儲,Java中對應的就是3種集合:set(集)、list(列表)和map(映射)。

相關文章
相關標籤/搜索