求最長連續元音字母字符串的長度


題目描述:給出字符串,求其中的最長元音字母子字符串的長度。

e.g: 輸入的字符串為abbaacbioueabba, 由於元音字母是'a', 'A', 'e',  'E', 'i', 'I', 'o', 'O', 'u', 'U'這十個,在給出的字符串中,包含這十個字母的最長的子字符串的長度為5, 即iouea,故輸出為5.

----------------------------------------------------------------------分隔線-------------------------------------------------------------------------

 其實這道題目與求最大子數組的和十分相似。

(LeetCode上面的674題,用的是相同的思路和方法 : https://leetcode-cn.com/problems/longest-continuous-increasing-subsequence/

我們可以設一個count用以返回符合題目條件的長度,用一個暫時長度來記錄遇到元音字母時該子字符串的長度,記為temp,那么當遇到一個元音字母時,temp的長度就+1,如果此時的temp比count要大的話,更新count的值。如果遇到的字符不屬於元音字母時,temp的值歸零,這樣就可以刪除temp的記憶,即在遇到下一個元音字母時,temp以前的記錄不會保留。

實現代碼如下:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = "";
        while(sc.hasNext()) {
            str = sc.nextLine();
            int res = findLen(str);
            System.out.println(res);
        }
    }
    
    public static int findLen(String str) {
        char[] ch = str.toCharArray();
        int count = 0, temp = 0;
        int len = ch.length;
        for(int i = 0; i < len; i++) {
            if(ch[i] == 'a' || ch[i] == 'e' || ch[i] == 'i' || ch[i] == 'o' || ch[i] == 'u' ||
                    ch[i] == 'A' || ch[i] == 'E' || ch[i] == 'I' || ch[i] == 'O' || ch[i] == 'U') {
                temp++;
                count = count > temp ? count : temp;
            }else
                temp = 0;
        }
        return count;
    }
}

 


免責聲明!

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



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