第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在字符串?dāng)?shù)組中查找最大的字符串

如何在字符串?dāng)?shù)組中查找最大的字符串

翻翻過去那場雪 2023-07-19 17:04:04
我需要從字符串?dāng)?shù)組中找到最大的字符串,并且還想確保出現(xiàn)的字符串應(yīng)僅包含在單獨(dú)的字符串中定義的那些字符。例如:如果一個(gè)字符串?dāng)?shù)組包含{"ABCAD","ABC","ABCFHG","AB"} 并且另一個(gè)字符串 S 包含 chars "ABCD"。那么這里返回的最大字符串應(yīng)該是,ABCAD因?yàn)樗话?中定義的字符S。public String findstring(String a, String[] arr){    String s="";    for(i=0; i<arr.length; i++)    {        //int m=0;        if(arr[i].length() > s.length())        {            s = arr[i];        }    }            for(j=0; j<s.length(); j++)                                                                  {                int m=0;                for(k=0; k<a.length(); k++)                {                    if(m>0)                    {                        break;                      }                    if((s.charAt(j)==a.charAt(k)))                    {                        m++;                    }                    else                    {                        continue;                    }                }                if(m==0)                {                    List<String> list = new ArrayList<String>(Arrays.asList(arr));                    list.remove(s);                    arr = list.toArray(new String[0]);                    findstring("ABCD", arr);                }            }        return s;}}我沒有收到任何錯(cuò)誤并獲得最大的字符串,因?yàn)锳BCFABCD需要F排除最大的字符串,而最大的字符串應(yīng)該是ABCAA。它跳過所有檢查,不知道為什么?
查看完整描述

3 回答

?
忽然笑

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊

您可以使用正則表達(dá)式以更好的方式做到這一點(diǎn):


public String findstring(final String a, final String[] arr) {

    String s = "";

    // Created pattern of the characters available in the String

    final Pattern p = Pattern.compile("^[" + a + "]*$");


    for (int i = 0; i < arr.length; i++) {


      if (p.matcher(arr[i]).matches()) {


        if ("".equals(s)) {

          s = arr[i];

        } else if (arr[i].length() > s.length()) {

          s = arr[i];

        }

      }


    }


    return s;

  }


查看完整回答
反對 回復(fù) 2023-07-19
?
慕斯王

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊

如果您想擁有新的和更好的 Java 功能以及一些優(yōu)雅、可讀和更少的代碼...您可以看看下面的代碼片段:


public static void main(String args[]) {

    final String allowedChars = "ABCD";

    final char[] chars = allowedChars.toCharArray();

    String result  = Stream.of("ABCAD","ABC","ABCFHG","AB")

            .filter(s ->{

                for(char c: chars){

                    if(!s.contains(c+""))

                        return false;

                }

                return true;

            })

            .max(Comparator.comparingInt(String::length))

            .orElse("No Such Value Found");

    System.out.println("Longes Valid String : " + result);

}

解釋:


該代碼僅生成有效Stream字符串(不包含允許字符的字符串將在進(jìn)一步處理中被簡單地刪除),并且將比較剩余的長度(使用),最后將返回最長的有效String字符串。arraysfilterStreamComparatorString


可能存在一種情況,數(shù)組/流中的所有字符串都無效,在這種情況下,代碼將返回消息“No Such Value Found”作為字符串,但是您可以拋出異常,也可以返回一些自己的值對于您的自定義邏輯,或者您可以返回 null 等。


我特意保留了 String 消息,并為您提供了有關(guān)學(xué)習(xí) Java Stream 中其他方法的提示,以便您可以探索更多內(nèi)容。


繼續(xù)編碼...感受新 JAVA 的力量。:)


查看完整回答
反對 回復(fù) 2023-07-19
?
慕勒3428872

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個(gè)贊

您進(jìn)行遞歸調(diào)用,但忽略返回值。


嘗試在遞歸查找字符串上添加返回。


   arr = list.toArray(new String[0]);

   return findstring("ABCD", arr);


查看完整回答
反對 回復(fù) 2023-07-19
  • 3 回答
  • 0 關(guān)注
  • 214 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號