国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C++初階】String在OJ中的使用(一):僅僅反轉(zhuǎn)字母、字符串中的第一個(gè)唯一字母、字符串最后一個(gè)單詞的長度、驗(yàn)證回文串、字符串相加

這篇具有很好參考價(jià)值的文章主要介紹了【C++初階】String在OJ中的使用(一):僅僅反轉(zhuǎn)字母、字符串中的第一個(gè)唯一字母、字符串最后一個(gè)單詞的長度、驗(yàn)證回文串、字符串相加。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言:

??個(gè)人博客:Dream_Chaser

??博客專欄:C++

??本篇內(nèi)容:僅僅反轉(zhuǎn)字母、字符串中的第一個(gè)唯一字母、字符串最后一個(gè)單詞的長度、驗(yàn)證回文串、字符串相加

目錄

917.僅僅反轉(zhuǎn)字母?

題目描述:

387.字符串中的第一個(gè)唯一字符

題目描述:

HJ1 字符串最后一個(gè)單詞的長度

輸入描述:

輸出描述:

125.驗(yàn)證回文串

題目描述:

415.字符串相加

題目描述:


917.僅僅反轉(zhuǎn)字母?

題目鏈接:917. 僅僅反轉(zhuǎn)字母 - 力扣(LeetCode)

題目描述:

給你一個(gè)字符串?s?,根據(jù)下述規(guī)則反轉(zhuǎn)字符串:

  • 所有非英文字母保留在原有位置。
  • 所有英文字母(小寫或大寫)位置反轉(zhuǎn)。

返回反轉(zhuǎn)后的?s?。

題目示例:

【C++初階】String在OJ中的使用(一):僅僅反轉(zhuǎn)字母、字符串中的第一個(gè)唯一字母、字符串最后一個(gè)單詞的長度、驗(yàn)證回文串、字符串相加,C++,c++,算法,leetcode,容器,stl,c語言

題目思路:

?使用begin和end兩個(gè)指針,開始時(shí)begin指向字符串開頭,end指針指向字符串末尾(’\0’的前一個(gè)字符)。當(dāng)兩指針同時(shí)指向字母時(shí),應(yīng)該立即進(jìn)行交換,接著begin++,end--。若其中一個(gè)遇到非字母或者兩個(gè)指針同時(shí)遇到非字母,則跳過該字符,進(jìn)行對應(yīng)的++,-- 操作,重復(fù)上述步驟。當(dāng)begin>end循環(huán)結(jié)束,返回 s .

起始圖:

【C++初階】String在OJ中的使用(一):僅僅反轉(zhuǎn)字母、字符串中的第一個(gè)唯一字母、字符串最后一個(gè)單詞的長度、驗(yàn)證回文串、字符串相加,C++,c++,算法,leetcode,容器,stl,c語言

動態(tài)過程:?

【C++初階】String在OJ中的使用(一):僅僅反轉(zhuǎn)字母、字符串中的第一個(gè)唯一字母、字符串最后一個(gè)單詞的長度、驗(yàn)證回文串、字符串相加,C++,c++,算法,leetcode,容器,stl,c語言

結(jié)果圖:

【C++初階】String在OJ中的使用(一):僅僅反轉(zhuǎn)字母、字符串中的第一個(gè)唯一字母、字符串最后一個(gè)單詞的長度、驗(yàn)證回文串、字符串相加,C++,c++,算法,leetcode,容器,stl,c語言

代碼:

class Solution {
public:
    bool isLetter(char ch)
    {
        if(ch>= 'A' && ch<='Z')
            return true;
        if(ch>='a' && ch<='z')
            return true;
        return false;
    }
    string reverseOnlyLetters(string s) {
       int begin = 0,end=s.size()-1;
       while(begin<end)
       {
            //先寫出判斷條件,避免越界問題,再判斷是否為字母
            //遇到非字母跳過
            while(begin<end && !isLetter(s[begin]))
            {
                ++begin;
            }
            while(begin<end && !isLetter(s[end]))
            {
                --end;
            }
            //進(jìn)行字母間的交換
            swap(s[begin],s[end]);
            ++begin;
            --end;
       }
        return s;
    }
};

387.字符串中的第一個(gè)唯一字符

題目鏈接:387. 字符串中的第一個(gè)唯一字符 - 力扣(LeetCode)

題目描述:

給定一個(gè)字符串?s?,找到?它的第一個(gè)不重復(fù)的字符,并返回它的索引?。如果不存在,則返回?-1?。

示例:

【C++初階】String在OJ中的使用(一):僅僅反轉(zhuǎn)字母、字符串中的第一個(gè)唯一字母、字符串最后一個(gè)單詞的長度、驗(yàn)證回文串、字符串相加,C++,c++,算法,leetcode,容器,stl,c語言

思路:

????????使用一個(gè)大小為26個(gè)int的數(shù)組countA(因?yàn)橹挥?6個(gè)字母)統(tǒng)計(jì)字符串 s 中每個(gè)字母出現(xiàn)的次數(shù),然后再遍歷一次字符串,找到第一個(gè)唯一字符(字符串中只有這一個(gè)只出現(xiàn)一次,并且它是第一個(gè),即使后面有唯一字符,也是返回第一個(gè)出現(xiàn)的字符),返回它在該字符串 s 中的索引,若找不到則返回-1。

【C++初階】String在OJ中的使用(一):僅僅反轉(zhuǎn)字母、字符串中的第一個(gè)唯一字母、字符串最后一個(gè)單詞的長度、驗(yàn)證回文串、字符串相加,C++,c++,算法,leetcode,容器,stl,c語言

class Solution {
public:
    int firstUniqChar(string s) {
    //計(jì)算這個(gè)字符串某個(gè)字符出現(xiàn)次數(shù)的數(shù)組
    int countA[26] = {0};
    //范圍for統(tǒng)計(jì)出字符串中每個(gè)元素出現(xiàn)的次數(shù)
    for(auto ch : s)
    {
        countA[ch - 'a']++;//映射其在字母表中的位置
    }
    for(int i =0;i<s.size();i++)
    {
        if(countA[s[i] - 'a'] == 1)//找到s中第一次出現(xiàn)的字母
        {
            return i;//返回其索引
        }
    }
    return -1;//找不到
    }
};

HJ1 字符串最后一個(gè)單詞的長度

題目鏈接:字符串最后一個(gè)單詞的長度_牛客題霸_??途W(wǎng) (nowcoder.com)

題目描述:

計(jì)算字符串最后一個(gè)單詞的長度,單詞以空格隔開,字符串長度小于5000。(注:字符串末尾不以空格為結(jié)尾)

輸入描述:

輸入一行,代表要計(jì)算的字符串,非空,長度小于5000。

輸出描述:

輸出一個(gè)整數(shù),表示輸入字符串最后一個(gè)單詞的長度。

示例:

【C++初階】String在OJ中的使用(一):僅僅反轉(zhuǎn)字母、字符串中的第一個(gè)唯一字母、字符串最后一個(gè)單詞的長度、驗(yàn)證回文串、字符串相加,C++,c++,算法,leetcode,容器,stl,c語言

圖解:

【C++初階】String在OJ中的使用(一):僅僅反轉(zhuǎn)字母、字符串中的第一個(gè)唯一字母、字符串最后一個(gè)單詞的長度、驗(yàn)證回文串、字符串相加,C++,c++,算法,leetcode,容器,stl,c語言

#include <iostream>
using namespace std;
#include<string>
int main()
{
    string str;
    getline(cin,str);//不要使用cin>>line,因?yàn)闀龅娇崭窬徒Y(jié)束了
    size_t i =str.rfind(' ');//找到此字符串的最后一個(gè)空格的位置
    if(i != string::npos)//等于則表示“未找到”或者“超出范圍”
    {
        cout<<str.size() - (i+1)<<endl;
    }
    else//字符串沒有空格,則計(jì)算整個(gè)字符串的大小
    {
        cout<<str.size()<<endl;
    }
}

125.驗(yàn)證回文串

題目鏈接:125. 驗(yàn)證回文串 - 力扣(LeetCode)

題目描述:

如果在將所有大寫字符轉(zhuǎn)換為小寫字符、并移除所有非字母數(shù)字字符之后,短語正著讀和反著讀都一樣。則可以認(rèn)為該短語是一個(gè)?回文串?。

字母和數(shù)字都屬于字母數(shù)字字符。

給你一個(gè)字符串?s,如果它是?回文串?,返回?true?;否則,返回?false?。

題目示例:

【C++初階】String在OJ中的使用(一):僅僅反轉(zhuǎn)字母、字符串中的第一個(gè)唯一字母、字符串最后一個(gè)單詞的長度、驗(yàn)證回文串、字符串相加,C++,c++,算法,leetcode,容器,stl,c語言

解題思路:

? ? ? ? 先寫一個(gè)判斷是否為字母和數(shù)字的函數(shù),然后寫一個(gè)判斷回文數(shù)的函數(shù),先用范圍for遍歷這個(gè)字符串,將所有小寫字母變成大寫字母(為什么不用大寫轉(zhuǎn)小寫呢?)看下面解釋:

【C++初階】String在OJ中的使用(一):僅僅反轉(zhuǎn)字母、字符串中的第一個(gè)唯一字母、字符串最后一個(gè)單詞的長度、驗(yàn)證回文串、字符串相加,C++,c++,算法,leetcode,容器,stl,c語言

將所有小寫字母轉(zhuǎn)換成大寫后,此時(shí)定義begin指向字符串的開頭,end則指向字符串結(jié)尾('\0'的前一個(gè)位置),循環(huán)條件是begin < end,此時(shí)遍歷字符串,begin向右移動,end向左移動,如果遇到 空格,以及其他非數(shù)字非字母的字符則直接跳過。

????????之后,如果兩指針此時(shí)指向的字符不一樣(因?yàn)榍懊嬉呀?jīng)小寫轉(zhuǎn)大寫)則直接返回false,如果相同依舊是begin++,end--,當(dāng)遍歷完字符串時(shí),則說明此字符串為回文字符串,返回true。

代碼:

class Solution {
public:
    //判斷是否是字母,數(shù)字,是返回true,否則為false
    bool isLetterOrNumber(char ch)
    {
        return (ch>='0' && ch<='9')
        || (ch>='a' && ch<='z')
        || (ch>='A' && ch<='Z');
    }
    //確保在后續(xù)比較時(shí),無論是大寫還是小寫字母,都被視為相同的字符
    //這樣做的好處在于,當(dāng)判斷字符串是否為回文串時(shí),我們不需要區(qū)分大小寫
    //在忽略空格并統(tǒng)一字母大小寫后,其回文性更容易判斷
    bool isPalindrome(string s)//判斷是否是回文數(shù)
    {
       for(auto&ch :s){
          if(ch>='a' && ch<= 'z')
          {
               ch -= 32;
          }
        }
    int begin = 0, end = s.size()-1;
    while(begin<end)
    {
        //遇到非字母和數(shù)字則跳過
        while(begin < end && !isLetterOrNumber(s[begin]))
        {
            ++begin;
        }
        while(begin < end && !isLetterOrNumber(s[end]))
        {
            --end;
        }
        if(s[begin] != s[end])
        {
            return false;
        }
        else
        {
            ++begin;
            --end;
        } 
    }
         return true;
    } 
  
};

415.字符串相加

題目鏈接:415. 字符串相加 - 力扣(LeetCode)

題目描述:

給定兩個(gè)字符串形式的非負(fù)整數(shù)?num1?和num2?,計(jì)算它們的和并同樣以字符串形式返回。

你不能使用任何內(nèi)建的用于處理大整數(shù)的庫(比如?BigInteger),?也不能直接將輸入的字符串轉(zhuǎn)換為整數(shù)形式。

題目示例:

【C++初階】String在OJ中的使用(一):僅僅反轉(zhuǎn)字母、字符串中的第一個(gè)唯一字母、字符串最后一個(gè)單詞的長度、驗(yàn)證回文串、字符串相加,C++,c++,算法,leetcode,容器,stl,c語言

代碼:?

class Solution {
public:
    string addStrings(string num1, string num2) {
        int end1=num1.size()-1,end2=num2.size()-1;
        string str;
        //進(jìn)位
        int next= 0;
        while(end1>= 0 || end2>=0)
        {
            int x1 = end1 >=0 ? num1[end1]-'0' : 0;
            int x2 = end2 >=0 ? num2[end2] -'0': 0;

            int ret = x1 + x2 +next;
            //進(jìn)位
            next = ret/10;
            ret= ret%10;
            //頭插
            str.insert(0,1,'0'+ret);
            --end1;
            --end2;
        }
           
         if(next ==1)
          str.insert(0,1,'1');
        
        return str;
    }
};

本篇完。

??本文修改次數(shù):0

??更新時(shí)間:2024年4月7日?文章來源地址http://www.zghlxwxcb.cn/news/detail-845308.html

到了這里,關(guān)于【C++初階】String在OJ中的使用(一):僅僅反轉(zhuǎn)字母、字符串中的第一個(gè)唯一字母、字符串最后一個(gè)單詞的長度、驗(yàn)證回文串、字符串相加的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 代碼隨想錄復(fù)習(xí) 151反轉(zhuǎn)字符串中的單詞242 有效的字母異位詞 0-1背包問題

    代碼如下? func?reverseWords(s?string)?string?{ ?????????b?:=?[]byte(s)? ? ?????????slowindex,fastindex?:=?0,0? //設(shè)置兩個(gè)指著,快慢指針 ?????????for?len(b)??0??fastindex??len(b)??b[fastindex]?==?\\\'?\\\'{ ?????????????fastindex++? ? //這里是取出開頭的空格,邏輯是如果當(dāng)

    2024年02月04日
    瀏覽(19)
  • 【C++初階】九、STL容器中的string類(上)

    【C++初階】九、STL容器中的string類(上)

    ========================================================================= 相關(guān)代碼gitee自取 : C語言學(xué)習(xí)日記: 加油努力 (gitee.com) ?========================================================================= 接上期 : 【C++初階】八、初識模板(泛型編程、函數(shù)模板、類模板)-CSDN博客 ?==============================

    2024年02月04日
    瀏覽(28)
  • 每日OJ題_算法_滑動窗口⑥_力扣438. 找到字符串中所有字母異位詞

    目錄 力扣438. 找到字符串中所有字母異位詞 解析及代碼1 解析及代碼2 438. 找到字符串中所有字母異位詞 - 力扣(LeetCode) 難度 中等 給定兩個(gè)字符串? s ?和? p ,找到? s ? 中所有? p ? 的? 異位詞? 的子串,返回這些子串的起始索引。不考慮答案輸出的順序。 異位詞? 指由

    2024年01月24日
    瀏覽(30)
  • C++:模板初階以及string類使用

    C++:模板初階以及string類使用

    1.泛型編程 泛型編程: 編寫與類型無關(guān)的通用代碼 ,是代碼復(fù)用的一種手段。 模板是泛型編程的基礎(chǔ)。 實(shí)現(xiàn)加法: 兩個(gè)函數(shù)只有類型上的不同,邏輯完全一致,能不能 寫一份表示邏輯的模板,讓編譯器幫我們生成函數(shù)呢? 2.函數(shù)模板 模板的原理圖 函數(shù)模板格式 templatet

    2024年02月13日
    瀏覽(18)
  • C++初階之一篇文章讓你掌握string類(了解和使用)

    C++初階之一篇文章讓你掌握string類(了解和使用)

    學(xué)習(xí) string 類是在 C++ 中非常重要的一步,string 類是 C++ 標(biāo)準(zhǔn)庫提供的用于處理字符串的類,它相比 C 語言中的字符串處理函數(shù)更為高級、靈活和安全。以下是學(xué)習(xí) string 類的一些重要理由: 功能強(qiáng)大 :string 類提供了豐富的成員函數(shù)和操作符,用于處理字符串的拼接、查找、

    2024年02月15日
    瀏覽(34)
  • 【C++】---string的OJ題

    【C++】---string的OJ題

    解題思路: 根據(jù)題意,有以下四種字符需要考慮: 首部空格: 刪除之即可; 符號位: 三種情況,即 ‘’+‘’ , ‘‘?’’ , \\\'\\\'無符號\\\" ;新建一個(gè)變量(sign)保存符號位,返回前判斷正負(fù)即可; 非數(shù)字字符: 遇到首個(gè)非數(shù)字的字符時(shí),應(yīng)立即返回; 數(shù)字字符: 字符轉(zhuǎn)數(shù)字

    2024年04月13日
    瀏覽(46)
  • 【C++初階】8. STL初階 + String類

    【C++初階】8. STL初階 + String類

    STL(standard template libaray-標(biāo)準(zhǔn)模板庫):是C++標(biāo)準(zhǔn)庫的重要組成部分,不僅是一個(gè)可復(fù)用的組件庫,而且是一個(gè)包羅 數(shù)據(jù)結(jié)構(gòu)與算法的軟件框架 。 原始版本 Alexander Stepanov、Meng Lee 在 惠普實(shí)驗(yàn)室 完成的原始版本,本著開源精神,他們聲明允許任何人任意運(yùn)用、拷貝、修改、傳播

    2023年04月08日
    瀏覽(34)
  • 【LeetCode】【C++】string OJ必刷題

    【LeetCode】【C++】string OJ必刷題

    ?? 樊梓慕: 個(gè)人主頁 ??? 個(gè)人專欄: 《C語言》《數(shù)據(jù)結(jié)構(gòu)》《藍(lán)橋杯試題》《LeetCode刷題筆記》《實(shí)訓(xùn)項(xiàng)目》《C++》《Linux》 ?? 每一個(gè)不曾起舞的日子,都是對生命的辜負(fù) 目錄 前言 【LeetCode】415.字符串相加 【LeetCode】43.字符串相乘? ?【LeetCode】125.驗(yàn)證回文字符串 【

    2024年02月05日
    瀏覽(20)
  • 151. 反轉(zhuǎn)字符串中的單詞

    題目鏈接:151. 反轉(zhuǎn)字符串中的單詞 代碼如下:

    2024年01月22日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包