字符串——OJ题

在这里插入图片描述


北尘_:个人主页

个人专栏:《Linux操作系统》《经典算法试题 》《C++》 《数据结构与算法》

☀️走在路上,不忘来时的初心

文章目录

  • 一、字符串相加
    • 1、题目讲解
    • 2、思路讲解
    • 3、代码实现
  • 二、仅仅反转字母
    • 1、题目讲解
    • 2、思路讲解
    • 3、代码实现
  • 三、字符串中第一个唯一字符
    • 1、题目讲解
    • 2、思路讲解
    • 3、代码实现
  • 四、字符串最后一个单词的长度
    • 1、题目讲解
    • 2、思路讲解
    • 3、代码实现
  • 五、验证回文串
    • 1、题目讲解
    • 2、思路讲解
    • 3、代码实现

一、字符串相加

1、题目讲解

字符串——OJ题_第1张图片

2、思路讲解

字符串——OJ题_第2张图片

3、代码实现

class Solution {
public:
    string addStrings(string num1, string num2) {
        int end1=num1.size()-1,end2=num2.size()-1;
        int next=0;
        string m;
        while(end1>=0 || end2>=0 )
        {
            int v1=0,v2=0;
            if(end1>=0)
            v1=num1[end1--]-'0';
            if(end2>=0)
            v2=num2[end2--]-'0';
            int ret=v1+v2+next;
            next=ret/10;
            ret%=10;

            m+=ret+'0';
        }
        if(next==1)
        m+='1';
        reverse(m.begin(),m.end());
        return m;   
    } 
};

二、仅仅反转字母

1、题目讲解

字符串——OJ题_第3张图片

2、思路讲解

字符串——OJ题_第4张图片

3、代码实现

class Solution {
public:
    bool letter(char ch)
    {
        if(ch>='a' && ch<='z') return true;
        if(ch>='A' && ch<='Z') return true;
        else return false;
    } 
    string reverseOnlyLetters(string s) {
        int end=s.size()-1,begin=0;
        while(begin<end)
        {
            while(begin<end && !letter(s[end]))
            {
                --end;
            }
            while(begin<end && !letter(s[begin]))
            {
                ++begin;

            }
            swap(s[begin++],s[end--]);
        }
        return s;
    }     
};

三、字符串中第一个唯一字符

1、题目讲解

字符串——OJ题_第5张图片

2、思路讲解

字符串——OJ题_第6张图片

3、代码实现

class Solution {
public:
    int firstUniqChar(string s) {
        int count[256]={0};
        int size=s.size();
        for(int i=0;i<size;i++)
        {
            count[s[i]]++;
        }
        int n=-1;
         for(int i=0;i<size;i++)
        {
            if(count[s[i]]==1) 
            {
                n=i;
                break;
            }
        }
        return n;
    }
};

四、字符串最后一个单词的长度

1、题目讲解

字符串——OJ题_第7张图片

2、思路讲解

字符串——OJ题_第8张图片

3、代码实现

#include 
using namespace std;

int main() 
{
    string s1;
    getline(cin,s1);
    int i=s1.rfind(' ');
    if(i!=string::npos)
        cout<<s1.size()-(i+1)<<endl;
    else 
        cout<<s1.size();

    return 0;
}

五、验证回文串

1、题目讲解

字符串——OJ题_第9张图片

2、思路讲解

字符串——OJ题_第10张图片

3、代码实现

class Solution {
public:
    bool isPalindrome(string s) {
       
        int n=s.size();
        string s1;
        for(int i=0;i<n;i++)
        {
            if(s[i]>='a' && s[i]<='z')
            s1+=s[i];
            else if(s[i]>='A' && s[i]<='Z')
            s1+=s[i]+32;
            else if(s[i]>='0' && s[i]<='9')
            s1+=s[i];  
        }
        int end=s1.size();
        for(int i=0;i<end/2;i++)
        {
            if(s1[i]!=s1[end-i-1])
            {
                return false;
            }
        }
        return true;
    }
};

你可能感兴趣的:(经典算法试题,算法)