成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

小小碼民刷算法——反轉(zhuǎn)字符串

Zhuxy / 2991人閱讀

摘要:模板經(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;}};

反轉(zhuǎn)單詞

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

相關(guān)文章

  • Python0基礎(chǔ)(上)——期末不掛科

    摘要:易于維護(hù)的成功在于它的源代碼是相當(dāng)容易維護(hù)的。可移植基于其開放源代碼的特性,已經(jīng)被移植也就是使其工作到許多平臺(tái)。集合集合是由一個(gè)或數(shù)個(gè)形態(tài)各異的大小整體組成的,構(gòu)成集合的事物或?qū)ο蠓Q作元素或是成員。基本功能是進(jìn)行成員關(guān)系測(cè)試和刪除重復(fù)元素。 ...

    Ajian 評(píng)論0 收藏0
  • July算法習(xí)題 - 符串1

    摘要:反轉(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)到字符串的尾部,如...

    Betta 評(píng)論0 收藏0
  • 【LeetCode】符串初級(jí)算法-反轉(zhuǎn)符串

    摘要:題目描述反轉(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...

    趙連江 評(píng)論0 收藏0
  • JavaScript中的算法(附10道面試常見算法題解決方法和思路)

    摘要:中的算法附道面試常見算法題解決方法和思路關(guān)注每日一道面試題詳解面試過程通常從最初的電話面試開始,然后是現(xiàn)場(chǎng)面試,檢查編程技能和文化契合度。值得記住的數(shù)組方法有和。一個(gè)好的解決方案是使用內(nèi)置的方法。 JavaScript中的算法(附10道面試常見算法題解決方法和思路) 關(guān)注github每日一道面試題詳解 Introduction 面試過程通常從最初的電話面試開始,然后是現(xiàn)場(chǎng)面試,檢查編程...

    Cruise_Chan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<