字串的展開

2021-09-27 03:24:23 字數 1664 閱讀 4468

題目描述

在初賽普及組的「閱讀程式寫結果」的問題中,我們曾給出乙個字串展開的例子:如果在輸入的字串中,含有類似於「d-h」或者「4-8」的字串,我們就把它當作一種簡寫,輸出時,用連續遞增的字母或數字串替代其中的減號,即,將上面兩個子串分別輸出為「defgh」和「45678"。在本題中,我們通過增加一些引數的設定,使字串的展開更為靈活。具體約定如下:

(1) 遇到下面的情況需要做字串的展開:在輸入的字串中,出現了減號「-」,減號兩側同為小寫字母或同為數字,且按照ascii碼的順序,減號右邊的字元嚴格大於左邊的字元。

(2) 引數p_1p

1​ :展開方式。p_1=1p

1​ =1時,對於字母子串,填充小寫字母;p_1=2p

1​ =2時,對於字母子串,填充大寫字母。這兩種情況下數字子串的填充方式相同。p_1=3p

1​ =3時,不論是字母子串還是數字字串,都用與要填充的字母個數相同的星號「*」來填充。

(3) 引數p_2p

2​ :填充字元的重複個數。p_2=kp

2​ =k表示同乙個字元要連續填充k個。例如,當p_2=3p

2​ =3時,子串「d-h」應擴充套件為「deeefffgggh」。減號兩邊的字元不變。

(4) 引數p_3p

3​ :是否改為逆序:p3=1p3=1表示維持原來順序,p_3=2p

3​ =2表示採用逆序輸出,注意這時候仍然不包括減號兩端的字元。例如當p_1=1p

1​ =1、p_2=2p

2​ =2、p_3=2p

3​ =2時,子串「d-h」應擴充套件為「dggffeeh」。

(5) 如果減號右邊的字元恰好是左邊字元的後繼,只刪除中間的減號,例如:「d-e」應輸出為「de」,「3-4」應輸出為「34」。如果減號右邊的字元按照ascii碼的順序小於或等於左邊字元,輸出時,要保留中間的減號,例如:「d-d」應輸出為「d-d」,「3-1」應輸出為「3-1」。

輸入格式

共兩行。

第11行為用空格隔開的33個正整數,依次表示引數p_1,p_2,p_3p

1​ ,p

2​ ,p

3​ 。

第22行為一行字串,僅由數字、小寫字母和減號「-−」組成。行首和行末均無空格。

輸出格式

共一行,為展開後的字串。

輸入輸出樣例

輸入 #1 複製

1 2 1

abcs-w1234-9s-4zz

輸出 #1 複製

abcsttuuvvw1234556677889s-4zz

輸入 #2 複製

2 3 2

a-d-d

輸出 #2 複製

acccbbbd-d

說明/提示

40%40%的資料滿足:字串長度不超過55

100%100%的資料滿足:1 \le p_1 \le 3,1 \le p_2 \le 8,1 \le p_3 \le 21≤p

1​ ≤3,1≤p

2​ ≤8,1≤p

3​ ≤2。字串長度不超過100100

標程:

#include

using namespace std;

intmain()

if(p3==2)

}}

cout << a << endl;

return0;

}

字串展開

給定乙個字串,字串包含數字,大小寫字母與括號,包括大括號,中括號和小括號 括號可以巢狀,即括號裡邊可以出現數字和括號,按照如下的跪著對字串進行展開,不需要考慮括號不成對匹配的問題,用例保證括號匹配,同時保證每個數字後面都有括號,不用考慮數字後邊沒有括號的情況,即 2a2 b 這種情況不用考慮。1 數...

字串展開

在初賽普及組的 閱讀程式寫結果 的問題中,我們曾給出乙個字串展開的例子 如果在輸入的字串中,含有類似於 d h 或 4 8 的子串,我們就把它當作一種簡寫,輸出時,用連續遞增的字母或數字串替代其中的減號,即,將上面兩個子串分別輸出為 defgh 和 45678 在本題中,我們通過增加一些引數的設定,...

字串的展開

在初賽普及組的 閱讀程式寫結果 的問題中,我們曾給出乙個字串展開的例子 如果在輸入的字串中,含有類似於 d h 或 4 8 的子串,我們就把它當作一種簡寫,輸出時,用連續遞增的字母或數字串替代其中的減號,即,將上面兩個子串分別輸出為 defgh 和 45678 在本題中,我們通過增加一些引數的設定,...