SDNUOJ 1186 字串的展開(ex)

2021-09-24 05:16:32 字數 2703 閱讀 4321

description

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

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

(2) 引數p1:展開方式。p1=1時,對於字母子串,填充小寫字母;p1=2時,對於字母子串,填充大寫字母。這兩種情況下數字子串的填充方式相同。p1=3時,不論是字母子串還是數字字串,都用與要填充的字母個數相同的星號「*」來填充。

(3) 引數p2:填充字元的重複個數。p2=k表示同乙個字元要連續填充k個。例如,當p2=3時,子串「d-h」應擴充套件為「deeefffgggh」。減號兩邊的字元不變。

(4) 引數p3:是否改為逆序:p3=1表示維持原來順序,p3=2表示採用逆序輸出,注意這時候仍然不包括減號兩端的字元。例如當p1=1、p2=2、p3=2時,子串「d-h」應擴充套件為「dggffeeh」。

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

input

輸入包括兩行:

第1行為用空格隔開的3個正整數,一次表示引數p1,p2,p3(1<=p1<=3,1<=p2<=8,1<=p3<=2)。

第2行為一行字串,僅由數字、小寫字母和減號「-」組成,字串長度不超過100。行首和行末均無空格。

output

輸出只有一行,為展開後的字串。

sample input

1 2 1

abcs-w1234-9s-4zz

sample output

abcsttuuvvw1234556677889s-4zz

分析:這題我感覺怎麼題目說的不大清楚,可能是我理解不到位吧,在展開的邊緣無限徘徊。。。。

這個(5)這裡,必須要是同字母或同數字才保留中間減號。那一句「如果減號右邊的字元按照ascii碼…」說的是同字母或同數字,,,,,其實好像,,,也沒多大影響噢。。。

ac**:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

//typedef long long ll;

#define maxn 100005*8

#define inf 0x3f3f3f3f

//將近int型別最大數的一半,而且乘2不會爆int

#define mod 1000000007

intmain()

}}else

if(p1 ==

2&& ret[0]

<=

'z'&& ret[0]

>=

'a')}}

else}}

if(p3 ==2)

reverse

(ans.

begin()

, ans.

end())

; cout << ans;

}elseif(

(ret[0]

<=

'z'&& ret[0]

>=

'a'&& ret[2]

<=

'z'&& ret[2]

>=

'a'&& ret[2]

== ret[0]

+1)||

(ret[0]

<=

'9'&& ret[0]

>=

'0'&& ret[2]

<=

'9'&& ret[2]

>=

'0'&& ret[2]

== ret[0]

+1))

continue

;elseif(

(ret[0]

<=

'z'&& ret[0]

>=

'a'&& ret[2]

<=

'z'&& ret[2]

>=

'a'&& ret[2]

<= ret[0]

)||(ret[0]

<=

'9'&& ret[0]

>=

'0'&& ret[2]

<=

'9'&& ret[2]

>=

'0'&& ret[2]

<= ret[0]

))cout <<

'-';

else

cout <<

'-';

}else

cout << s[i];}

cout <<

'\n'

;return0;

}

不好意思,**比較醜。。。

字串1 字串的旋轉

題目描述 給定乙個字串,要求將字串前面的若干個字元移到字串的尾部。例如 將字串 abcdef 的前三個字元 a b c 移到字串的尾部,那麼原字串將變成 defabc 首先想到的是將需要移動的字元乙個乙個移到字串的尾部。實現如下 public class transfet s n 1 t publi...

5 6字串的統計字串

題目 給定乙個字串str,返回str的統計字串。補充題目 給定乙個字串的統計字串cstr,再給定乙個整數index,返回cstr所代表的原始字串上的第index個字元。實現public class getcountstring string res string.valueof str.charat...

字串(一) 字串Hash

今天開一手最不 tao 擅 yan 長的字串演算法 字串hash演算法。似乎提到字串的話,kmp應該是更為常見的一種,但是hash有它的優點,被犇們稱為 優雅的暴力 何謂hash?hash的中文稱為雜湊,這當然是音譯,直譯過來就是雜湊,或者也有叫預對映的。雜湊的作用就是通過某個特殊函式的對映,將任意...