NCSTOJ 1362 字串替換

2021-08-28 12:47:21 字數 2466 閱讀 2308

題目描述:

​ 編寫乙個程式實現將字串中所有的"you"替換成"we"

輸入:​ 輸入包含多行資料,每行資料是乙個字串,長度不超過1000,資料以eof結束

輸出:​ 對於輸入的每一行,輸出替換後的字串

樣例輸入:

​ you are what you do

樣例輸出:

​ we are what we do

​ 通常思路就是掃一遍字串,碰到』y』就看後面兩個是不是』o』和』u』,然後把位置後移3個,繼續掃,輸入因為有空格並且要求以eof結束,所以用getline()來讀入

​ 關於getline()

#include

#include

#include

using namespace std;

intmain()

else

printf

("%c"

,ss[i]);

}printf

("\n");

}return0;

}

​ 其實就是關於串的模式匹配演算法,找對應的下標,什麼bf,kr,kmp,都太複雜了,看懂都麻煩,實現還要維護一堆東西,蒟蒻的我怎麼可能實現,想要高階點的的那為啥不用string類的find()和replace()函式

find

size_type find

(const value_type* ptr,

size_type _off =0)

const

;引數:

ptr 成員函式要搜尋的 c 字串

_off 搜尋開始處的索引

返回值:

搜尋成功時,則為搜尋的子字串的首個字元的索引;否則為 npos

replace

basic_string

&replace

( size_type _pos1,

size_type _num1,

const value_type* ptr)

;引數:

_pos1 運算元 字串替換開始的索引

_num1 最大運算元 字串中要替換的字元數

ptr c字串,它將是運算元字串的字元源(就是你用來替換的字串)

返回值:

運算元進行替換字串(替換完的字串)

簡單的小例子,用find()在str1中找str2出現的位置,並用replace()做替換

string str1=

"i love ncstoj"

;string str2=

"ncst"

;int pos=str1.

find

(str2)

;//int pos=str1.find("ncst"); //直接打乙個字元或字串也行

if(pos==string:

:npos)

// 如果str1中找不到str2那麼返回值一定是npos ,一般為-1

cout<<

"不存在"

<

else

(1)結果

(2)結果

本題**:

#include

#include

using namespace std;

intmain()

return0;

}

關於npos:

size_t型別,初始化為-1。

size_t為無符號的整數型別可表示的元素數、 字串中的索引。也就是說其是一種用來記錄大小的資料型別。

平時用sizeof()運算獲得的就是size_t型別,可以強制轉換為int。

#include

#include

size_t npos=-1

;cout<<

"npos值: "

<

cout<<

"size_t最大值: "

<::>

max(

)<

cout<<

"對npos進行強制轉換後:"

這也就解釋了返回值為什麼既可以等於npos又可以等於-1

南陽 113字串替換

時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 編寫乙個程式實現將字串中的所有 you 替換成 we 輸入 輸入包含多行資料 每行資料是乙個字串,長度不超過1000 資料以eof結束 輸出對於輸入的每一行,輸出替換後的字串 樣例輸入 you are what you do 樣...

習題7 7 字串替換

習題7 7 字串替換 description 本題要求編寫程式,將給定字串中的大寫英文本母按以下對應規則替換 原字母對應字母az bycx dw xcyb zainput 輸入在一行中給出乙個不超過80個字元 並以回車結束的字串。output 輸出在一行中給出替換完成後的字串。sample inpu...

習題7 7 字串替換

本題要求編寫程式,將給定字串中的大寫英文本母按以下對應規則替換 原字母對應字母az bycx dw xcyb za輸入在一行中給出乙個不超過80個字元 並以回車結束的字串。輸出在一行中給出替換完成後的字串。only the 11 capital letters are replaced.lnly t...