c++怎么输入带有空格的字符串_杭电OJ 字符串处理类部分题解
一、前言
不知不覺已經(jīng)大三上學(xué)期了,可作為一個(gè)計(jì)算機(jī)狗還沒有考過CCF-CSP。因平時(shí)學(xué)習(xí)內(nèi)容主要與安全方面相關(guān),對(duì)于此類算法類的考核并沒有太多的準(zhǔn)備,故打算開始刷題復(fù)習(xí)算法和數(shù)據(jù)結(jié)構(gòu),準(zhǔn)備CCF認(rèn)證。在這里選擇杭電的OJ作為準(zhǔn)備此次CCF備考的練習(xí)題目。
雖然平時(shí)在學(xué)校里使用java語言較多,但考慮到語言運(yùn)行速度和語法及編譯器的熟練程度,以及網(wǎng)絡(luò)上對(duì)于OJ題目的解法大多為c/c++編寫,故此次打算報(bào)名c/c++作為編寫語言,并使用CCF官方給出的devcpp作為編譯環(huán)境。因此筆者在解題過程中可能會(huì)較多使用STL,并對(duì)其功能進(jìn)行一些講解。同時(shí),筆者會(huì)盡量采用較為基礎(chǔ)、常見的算法解題,可能會(huì)在額外時(shí)間和額外內(nèi)存上無法做到完美,適合與算法初學(xué)者、基礎(chǔ)者交流。
由于杭電OJ的題目較多,筆者會(huì)對(duì)其中部分題目進(jìn)行個(gè)人分析和源代碼的展示,并以題目類型進(jìn)行分類。僅供學(xué)習(xí)和交流。
二、題解
2072、單詞數(shù)
2072、單詞數(shù)
此題的思路很簡單,我們接收一個(gè)字符串,將其中的單詞逐個(gè)提取出來;然后構(gòu)造一個(gè)結(jié)構(gòu)存儲(chǔ)單詞字符串,此結(jié)構(gòu)初始時(shí)為空,每次將逐個(gè)取出的單詞與此結(jié)構(gòu)中的所有單詞比較,如果此單詞已經(jīng)存儲(chǔ),繼續(xù)提取下一個(gè)單詞;如果還未存儲(chǔ),那么存儲(chǔ)此單詞在結(jié)構(gòu)中,單詞計(jì)數(shù)器加一。
此題有以下幾個(gè)需要注意的地方:
1、輸入字符串的接收。如果我們僅使用cin來輸入字符串,那么遇到空格時(shí),一次輸入就會(huì)結(jié)束,無法接收完整的字符串。故在此題中需要使用以下:
getline(cin,string s),可以輸入時(shí)接收空格在字符串中,遇到回車符結(jié)束一次輸入。包含在<string>頭文件中。
2、存儲(chǔ)結(jié)構(gòu)的選則。因?yàn)槲覀円婚_始不知道一句話會(huì)有多少個(gè)單詞,也不知道單詞數(shù)的上限,所以選擇可變長結(jié)構(gòu)vector來存儲(chǔ)字符串。因此,我們?cè)谧詈笥?jì)算單詞個(gè)數(shù)時(shí),既可以使用自定義的計(jì)數(shù)器count,也可以直接使用函數(shù)vector.size()。
3、此題可能會(huì)出現(xiàn)在句子開頭、結(jié)尾出現(xiàn)空格以及兩個(gè)單詞中間出現(xiàn)多個(gè)空格的情況,要在程序中予以考慮。
筆者源代碼如下:
#include-----------------------------------------待更新----------------------------------------------
總結(jié)
以上是生活随笔為你收集整理的c++怎么输入带有空格的字符串_杭电OJ 字符串处理类部分题解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 摩尔庄园粉海豚什么时候有
- 下一篇: python和node_Python和N