華為OD機(jī)試- 字符串化繁為簡(jiǎn)
給定一個(gè)輸入字符串,字符串只可能由英文字母 (a ~z、A~ Z ) 和左右小括號(hào) (、) 組成當(dāng)字符里存在小括號(hào)時(shí),小括號(hào)是成對(duì)的,可以有一個(gè)或多個(gè)小括號(hào)對(duì),小括號(hào)對(duì)不會(huì)嵌套,小括號(hào)對(duì)內(nèi)可以包含1個(gè)或多個(gè)英文字母也可以不包含英文字母。當(dāng)小括號(hào)對(duì)內(nèi)包含多個(gè)英文字母時(shí),這些字母之間是相互等效的關(guān)系,而且等效關(guān)系可以在不同的小括號(hào)對(duì)之間傳遞,即當(dāng)存在a和b等效和存在b和c等效時(shí), a和c 也等效,另外,同一個(gè)英文字母的大寫(xiě)字和小寫(xiě)字母也相互等效(即使它們分布在不同的括號(hào)對(duì)里)
? ? ? ? 要對(duì)這個(gè)輸入字符串做簡(jiǎn)化,輸出一個(gè)新的字符串,輸出字符串里只需保留輸入字符串里的沒(méi)有被小括號(hào)對(duì)包含的字符(按照輸入字符串里的字符順序),并將每個(gè)字符替換為在小括號(hào)對(duì)里包含的目字典序最小的等效字符。如果簡(jiǎn)化后的字符串為空,請(qǐng)輸出為”0”
示例:輸入字符串為"never(dont)live(run)up(f)()",初始等效字符集合為(d,o,n,t)、r,u,n),由于等效關(guān)系可以傳遞,因此最終等效字符集合為(d,o,n,t,r,u),將輸入字符串里的剩余部分按字典序最小的等效字符替換后得到"devedgivedp
輸入描述
input string
輸入為1行,代表輸入字符串
輸出描述
output string
輸出為1行,代表輸出字符串
備注
輸入字符串的長(zhǎng)度在1~100000之間
示例1:
輸入:
()abd
輸出:
abd
說(shuō)明:
輸入字符串里沒(méi)有被小括號(hào)包含的了字符串為"abd",其中每個(gè)字符沒(méi)有等效字符,輸出為"abd"
示例2:
輸入:
(abd)demand(fb)()for
輸出:
aemanaaor
說(shuō)明:
等效字符集為(a,b,d,f),輸入字符串里沒(méi)有被小括號(hào)包含的了字符串集合為'demandfor”,將其中字符替換為字典序最小的等效字符后輸出為:"aemanaaor
示例3:
輸入:
(happy(xyz)new(wxy)year(t)
輸出:
happwnewwear
說(shuō)明:
等效字符集為(x,y,z,w),輸入字符串里沒(méi)有被小括號(hào)包含的了字符串集合為"happynewyear”,將其中字符替換為字典序最小的等效字等后輸出為:"happwnewwear
Java 實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/130794909
Python實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/130803037
C++ 實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/130803075
JavaScript實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/130803008
C實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/130803110