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

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

Java:需要查看輸入字符串中的每個(gè)字符是否與“字母表”中的任何字符匹配

Java:需要查看輸入字符串中的每個(gè)字符是否與“字母表”中的任何字符匹配

Cats萌萌 2022-12-21 10:42:18
我正在實(shí)施 DFA。給定的字母表是 {a, b}。我有它告訴我輸入字符串是否被接受。(它有一個(gè)簡(jiǎn)單的“接受”規(guī)則——輸入字符串的第一個(gè)和最后一個(gè)字符必須相同)不過(guò),我想做的是檢查輸入字符串中的每個(gè)字符是否符合規(guī)定的“字母表”。因此,作為布爾值,如果輸入字符串為“abcdefg”(例如),它將返回 false ... 如果輸入字符串為“abbaabbbba”(例如),它將返回 true我需要檢查 a 是否在字母表中...然后 b 是否在字母表中...然后 c 是否在字母表中...輸入字符串中的每個(gè)字符等等。我嘗試了不同類(lèi)型的循環(huán)變體,(我不記得每一個(gè)變體?。?inputString.charAt(i) 與字母表中的每個(gè)字符進(jìn)行比較......但到目前為止,沒(méi)有任何東西像我需要/想要的那樣工作到。例如,現(xiàn)在我正在嘗試:  public boolean isInAlphabet(String inputString) {    if(inputString == " ") {      System.out.println("   -> empty string is not in our alphabet");      return false;    }    for(int i = 0; i < inputString.length(); i++) {      Character check = inputString.charAt(i);      System.out.print(check);  // just to see what it's doing      if(check.equals(alphabet.charAt(0)) || check.equals(alphabet.charAt(1))) {        System.out.println("   -> your input string is in our alphabet");        return true;      }      else{        System.out.println("   -> your input string is *not* in our alphapet");        return false;      }    }    return false;  }字母表示為:String alphabet = "ab";輸入字符串如下:String inputString = "abcdefg";事情是,它在發(fā)現(xiàn)輸入字符串中的第一個(gè)字符在字母表中后停止檢查。像:test input string: abcdefgis test input string in our alphabet?a   -> your input string is in our alphabet...這就是它所做的所有進(jìn)一步檢查。我如何讓它根據(jù)字母表檢查整個(gè)輸入字符串——輸入字符串的每個(gè)字符?就像我說(shuō)的,我什至不記得到目前為止我嘗試過(guò)的所有事情,但至少有十幾個(gè)。我嘗試的越多,我就越困惑。這感覺(jué)很簡(jiǎn)單,但我不確定如何讓它工作。
查看完整描述

2 回答

?
LEATH

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

我在這里假設(shè)如果字母表包含來(lái)自 inputString 的所有字符并且 inputString 的第一個(gè)和最后一個(gè)字符相同那么它是有效的。


但例如,Alphabet = {a,b} 和 inputString="aaaaa"。所以,我假設(shè)這個(gè)輸入也是有效的。(如果這就是您要查找的內(nèi)容,那么您可以使用以下邏輯來(lái)解決它。)我將 HashSet 用于字母表,然后我們可以迭代整個(gè)字符串并檢查字母表是否包含它。下面的代碼用于將字母字符串轉(zhuǎn)換為 HashSet。


    String str="ab";

    for(char ch:str.toCharArray()){

        alphabet.add(ch);

    }

現(xiàn)在,要實(shí)現(xiàn)檢查有效輸入的方法,您可以考慮以下代碼。


public boolean isInAlphabet(String inputString) {

    if(inputString==null || inputString.length()==0) return false;

    if(inputString.charAt(0)!=inputString.charAt(inputString.length()-1)) return false;

    for(char ch:inputString.toCharArray()){

        if(!alphabet.contains(ch)) return false;

    }

    return true;

}


查看完整回答
反對(duì) 回復(fù) 2022-12-21
?
人到中年有點(diǎn)甜

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

這只是如何進(jìn)行的模式,它更像是一種通用模式,在這種情況下會(huì)根據(jù)您的目的進(jìn)行調(diào)整。
(僅當(dāng)?shù)谝粋€(gè)字符與最后一個(gè)字符相同時(shí)才接受)

這是您問(wèn)題的 DFA。

http://img1.sycdn.imooc.com//63a274ce0001d60f06470537.jpg

基本上有內(nèi)部狀態(tài)(圓圈)和轉(zhuǎn)換(箭頭) 狀態(tài)


S1->開(kāi)始狀態(tài)(總是從這里開(kāi)始)
S2,S3->中間(當(dāng)輸入完成并且此狀態(tài)不被接受時(shí))
S4,S5->最終狀態(tài)(輸入完成,然后接受此狀態(tài))`


Transitions[movements array]
(StateA, StateB, char) : 從 SA 到 SB with char
(S1,S3,a) : T1
(S1,S2,b) : T2
(S3,S3,b) : T3
(S3, S4,a) : T4
(S4,S4,a) : T5
(S2,S2,a) : T6
(S4,S3,b) : T7
(S2,S5,b) : T8
(S5,S2,a) : T9
(S5,S5,b) : T10

例如:
1:abb
(S1,a)->S3 by T1
(S3,b)->S3 by T3
(S3,b)->S3 by T3
End on S3 and input is not accepted

2:babb
(S1,b)->S2 by T2
(S2,a)->S2 by T6
(S2,b)->S5 by T9(接受如果輸入是finish:bab,這里不是)
(S5,b) ->S5 by T10
在 S5 上結(jié)束并接受輸入

對(duì)于任何其他不在字母表中的字符遇到,立即返回不接受。

對(duì)于編碼,需要添加狀態(tài)和轉(zhuǎn)換。在每一步逐個(gè)檢查輸入字符時(shí),然后正確更新當(dāng)前狀態(tài)。

希望對(duì)你有用。


查看完整回答
反對(duì) 回復(fù) 2022-12-21
  • 2 回答
  • 0 關(guān)注
  • 111 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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