字符串——OJ题
2023-12-16 04:49:27
    		
文章目录
一、字符串相加
1、题目讲解

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、题目讲解

2、思路讲解

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、题目讲解

2、思路讲解

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、题目讲解

2、思路讲解

3、代码实现
#include <iostream>
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、题目讲解

2、思路讲解

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;
    }
};
    			文章来源:https://blog.csdn.net/2301_78995005/article/details/135023376
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
    	本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!