日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++ substr截取中间部分字符串_杭电OJ 字符串处理类部分题解

發布時間:2025/3/15 c/c++ 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++ substr截取中间部分字符串_杭电OJ 字符串处理类部分题解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、前言

不知不覺已經大三上學期了,可作為一個計算機狗還沒有考過CCF-CSP。因平時學習內容主要與安全方面相關,對于此類算法類的考核并沒有太多的準備,故打算開始刷題復習算法和數據結構,準備CCF認證。在這里選擇杭電的OJ作為準備此次CCF備考的練習題目。

雖然平時在學校里使用java語言較多,但考慮到語言運行速度和語法及編譯器的熟練程度,以及網絡上對于OJ題目的解法大多為c/c++編寫,故此次打算報名c/c++作為編寫語言,并使用CCF官方給出的devcpp作為編譯環境。因此筆者在解題過程中可能會較多使用STL,并對其功能進行一些講解。同時,筆者會盡量采用較為基礎、常見的算法解題,可能會在額外時間和額外內存上無法做到完美,適合與算法初學者、基礎者交流。

由于杭電OJ的題目較多,筆者會對其中部分題目進行個人分析和源代碼的展示,并以題目類型進行分類。僅供學習和交流。

二、題解

2072、單詞數

2072、單詞數

此題的思路很簡單,我們接收一個字符串,將其中的單詞逐個提取出來;然后構造一個結構存儲單詞字符串,此結構初始時為空,每次將逐個取出的單詞與此結構中的所有單詞比較,如果此單詞已經存儲,繼續提取下一個單詞;如果還未存儲,那么存儲此單詞在結構中,單詞計數器加一。

此題有以下幾個需要注意的地方:

1、輸入字符串的接收。如果我們僅使用cin來輸入字符串,那么遇到空格時,一次輸入就會結束,無法接收完整的字符串。故在此題中需要使用以下:

getline(cin,string s),可以輸入時接收空格在字符串中,遇到回車符結束一次輸入。包含在<string>頭文件中。

2、存儲結構的選則。因為我們一開始不知道一句話會有多少個單詞,也不知道單詞數的上限,所以選擇可變長結構vector來存儲字符串。因此,我們在最后計算單詞個數時,既可以使用自定義的計數器count,也可以直接使用函數vector.size()。

3、此題可能會出現在句子開頭、結尾出現空格以及兩個單詞中間出現多個空格的情況,要在程序中予以考慮。

筆者源代碼如下:

#include<iostream> #include<vector> #include<string.h> #include<string> using namespace std;int main(void){string s;while(getline(cin,s)){int count = 0;if(s=="#") break;vector<string>vec; //用于存放已經統計過的字符串int len = s.length();int begin = 0; //本次截取的頭部for(int i=0;i<len;i++){if(s[i]==' '||i==len-1){string now;if(s[i]==' ') now = s.substr(begin,i-begin);else if(i==len-1) now = s.substr(begin,len-begin);int j;for(j=0;j<count;j++){if(now==vec[j]) break;}if(j==count&&now!=""){ //防止開頭、結尾有空格同時中間有多個空格的情況vec.push_back(now); //如果這個單詞還沒有被統計過,則放入容器中count++;}begin = i + 1; //更新截取起始位置}}cout<<count<<endl;vec.clear();}return 0; }

-----------------------------------------待更新----------------------------------------------

總結

以上是生活随笔為你收集整理的c++ substr截取中间部分字符串_杭电OJ 字符串处理类部分题解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。