摘要:模板經(jīng)過一個(gè)下午的刷題時(shí)光,我發(fā)現(xiàn)力扣中字符串有關(guān)的題,可分為有空格和無空格的倆種類型,模板一記,直接開掛,秋名山的賽道,跑的飛起如果有前后置空格,那么必須判斷臨時(shí)字符串非空才能輸出,否則會(huì)輸出空串對(duì)應(yīng)的代碼如下
經(jīng)過一個(gè)下午的刷題時(shí)光,我發(fā)現(xiàn)力扣中字符串有關(guān)的題,可分為有空格和無空格的倆種類型,模板一記,直接開掛,秋名山的賽道,跑的飛起?。。?/p>
1、如果有前后置空格,那么必須判斷臨時(shí)字符串非空才能輸出,否則會(huì)輸出空串
`對(duì)應(yīng)的代碼如下:
void test01(){ s += " "; //這里在最后一個(gè)字符位置加上空格,這樣最后一個(gè)字符串就不會(huì)遺漏 string temp = ""; //臨時(shí)字符串 vector<string> res; //存放字符串的數(shù)組 for (char ch : s) //遍歷字符句子 { if (ch == " ") //遇到空格 { if (!temp.empty()) //臨時(shí)字符串非空 { res.push_back(temp); temp.clear(); //清空臨時(shí)字符串 } } else temp += ch; }}
2、沒有前后置的空格不需要判斷空串
void text02(){ s += " "; string temp = ""; vector<string> res; for (char ch : s) { if (ch == " ") { res.push_back(temp); temp.clear(); } else temp += ch; }}
反轉(zhuǎn)字符串
直接用雙指針來解
int n = s.size();for (int left = 0, right = n - 1; left < right; ++left, --right) { swap(s[left], s[right]);//交換函數(shù)}
反轉(zhuǎn)字符串的前綴
需要判斷是否為空
class Solution {public: string reversePrefix(string word, char ch) { for(int i = 0; word[i] != "/0"; ++i) { if(word[i] == ch) { reverse(begin(word), begin(word) + i + 1);//反轉(zhuǎn)字符串 break; } } return word;}};
class Solution {public: string reverseWords(string s) { string ans; //i,j用于確定跳過首尾空格的下標(biāo)范圍 int i=0,j=s.size()-1; //跳過s的首部空格 while(i<=j&&s[i]==" ") i++; //跳過s的尾部空格 while(i<=j&&s[j]==" ") j--; //k,w為用于確定每個(gè)單詞范圍的雙指針,從非空格尾部開始往前掃描,i為前邊界,j為后邊界 int k=j,w=j; //當(dāng)輸入全為空格時(shí),跳過首尾空格后i>j while(i<=j&&k>=i){ //k往前掃描直到遇到空格停下,或者超出i前邊界停下 while(k>=i&&s[k]!=" ") k--; //k+1到w為一個(gè)單詞的范圍,將每個(gè)字符按序加入string ans即可 for(int idx=k+1;idx<=w;idx++) ans+=s[idx]; //沒超出前邊界i時(shí),k停下遇到的肯定是空格,可能是一個(gè)或多個(gè),跳過 if(k>=i&&s[k]==" "){ while(k>=i&&s[k]==" ") k--; //跳過一個(gè)或多個(gè)空格后,ans加一個(gè)必要的空格 ans+=" "; } //w跳到k位置繼續(xù)掃描下一個(gè)單詞范圍 w=k; } return ans; }};
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/123492.html
摘要:易于維護(hù)的成功在于它的源代碼是相當(dāng)容易維護(hù)的。可移植基于其開放源代碼的特性,已經(jīng)被移植也就是使其工作到許多平臺(tái)。集合集合是由一個(gè)或數(shù)個(gè)形態(tài)各異的大小整體組成的,構(gòu)成集合的事物或?qū)ο蠓Q作元素或是成員。基本功能是進(jìn)行成員關(guān)系測(cè)試和刪除重復(fù)元素。 ...
摘要:反轉(zhuǎn)上述步驟得到的結(jié)果字符串,即反轉(zhuǎn)字符串的兩部分和給予反轉(zhuǎn),得到,形式化表示為,這就實(shí)現(xiàn)了整個(gè)反轉(zhuǎn)。例如,原字符串為,,輸出結(jié)果為。同單詞翻轉(zhuǎn)輸入一個(gè)英文句子,翻轉(zhuǎn)句子中單詞的順序,但單詞內(nèi)字符的順序不變,句子中單詞以空格符隔開。 July 程序員編程藝術(shù):面試和算法心得題目及習(xí)題 旋轉(zhuǎn)字符串 題目描述 給定一個(gè)字符串,要求把字符串前面的若干個(gè)字符移動(dòng)到字符串的尾部,如...
摘要:題目描述反轉(zhuǎn)字符串編寫一個(gè)函數(shù),其作用是將輸入的字符串反轉(zhuǎn)過來。示例輸入輸出示例輸入輸出思路先用轉(zhuǎn)成數(shù)組,再用反轉(zhuǎn),最后用組合成字符串。 題目描述 反轉(zhuǎn)字符串編寫一個(gè)函數(shù),其作用是將輸入的字符串反轉(zhuǎn)過來。 示例 1: 輸入: hello 輸出: olleh 示例 2: 輸入: A man, a plan, a canal: Panama 輸出: amanaP :lanac a ,n...
摘要:中的算法附道面試常見算法題解決方法和思路關(guān)注每日一道面試題詳解面試過程通常從最初的電話面試開始,然后是現(xiàn)場(chǎng)面試,檢查編程技能和文化契合度。值得記住的數(shù)組方法有和。一個(gè)好的解決方案是使用內(nèi)置的方法。 JavaScript中的算法(附10道面試常見算法題解決方法和思路) 關(guān)注github每日一道面試題詳解 Introduction 面試過程通常從最初的電話面試開始,然后是現(xiàn)場(chǎng)面試,檢查編程...
閱讀 2992·2021-11-16 11:45
閱讀 5194·2021-09-22 10:57
閱讀 1779·2021-09-08 09:36
閱讀 1608·2021-09-02 15:40
閱讀 2519·2021-07-26 23:38
閱讀 1208·2019-08-30 15:55
閱讀 934·2019-08-30 15:54
閱讀 1225·2019-08-29 14:06