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


分析思路:

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

(2)因為數字串有多長預先並不知道,會不斷加長數字串,所以要用StringBuffer。StringBuffer對象的內容可以修改;而String對象一旦產生后就不可以被修改,重新賦值其實是兩個對象。

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

(4)數字串長度值作為標志位,要始終保持 數字串長度值 和 數字串 的同步變化。

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)StringBuffer

  初始化  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(映射)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM