字符串——OJ题

简介: 字符串——OJ题

一、字符串相加


1、题目讲解

73a155974f204e8e9541a954b3355541.png

2、思路讲解

0ece5f0daaf74fd6b70f2f5fe64b0b8c.png

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

03f7d133069845a9accf8cd6f2cd8746.png

2、思路讲解

cf1ccf883b0c417f98f0a7911b051325.png

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

f87e4bc7ade54e378f55b72bcb89b602.png

2、思路讲解

15b5e48caeec41229f063597f6097c8f.png

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

74e0ba8f8beb45818df10d8c6327378b.png

2、思路讲解

a72d6373b20b46a8a2562f5d3ec6d8ce.png

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

b47a6d5508ab44f7b552f2680e0dc4ea.png

2、思路讲解

15cc644d82464018b6ffa1ea75e173f5.png

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;
    }
};


目录
相关文章
|
存储
第一个只出现一次的字符(OJ题)
第一个只出现一次的字符(OJ题)
56 0
|
7月前
剑指Offer LeetCode 面试题50. 第一个只出现一次的字符
剑指Offer LeetCode 面试题50. 第一个只出现一次的字符
36 0
|
存储
数组OJ题(1)
数组OJ题(1)
58 0
|
存储 算法
数组OJ题(2)
数组OJ题(2)
115 0
|
存储
数组OJ题(总)
数组OJ题(总)
80 0
|
存储
数组OJ题汇总(一)
数组OJ题汇总(一)
64 0
剑指offer_字符串---左旋转字符串
剑指offer_字符串---左旋转字符串
48 0
剑指offer_数组---替换空格
剑指offer_数组---替换空格
50 0
|
Java C++
代码随想录刷题|LeetCode 344.反转字符串 541. 反转字符串II 剑指Offer 05.替换空格 151.反转字符串里的单词 剑指Offer58-II.左旋转字符串
代码随想录刷题|LeetCode 344.反转字符串 541. 反转字符串II 剑指Offer 05.替换空格 151.反转字符串里的单词 剑指Offer58-II.左旋转字符串
代码随想录刷题|LeetCode 344.反转字符串 541. 反转字符串II 剑指Offer 05.替换空格 151.反转字符串里的单词 剑指Offer58-II.左旋转字符串