字符串——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;
    }
};


目录
相关文章
|
6月前
|
存储
第一个只出现一次的字符(OJ题)
第一个只出现一次的字符(OJ题)
25 0
|
5月前
|
Java
每日一题《剑指offer》字符串篇之替换空格
每日一题《剑指offer》字符串篇之替换空格
33 0
每日一题《剑指offer》字符串篇之替换空格
|
5月前
剑指Offer LeetCode 面试题50. 第一个只出现一次的字符
剑指Offer LeetCode 面试题50. 第一个只出现一次的字符
22 0
|
6月前
|
存储
数组OJ题(总)
数组OJ题(总)
46 0
|
6月前
|
存储 算法
数组OJ题(2)
数组OJ题(2)
64 0
|
6月前
|
存储
数组OJ题(1)
数组OJ题(1)
24 0
|
6月前
|
存储
数组OJ题汇总(一)
数组OJ题汇总(一)
45 0
|
10月前
|
算法
(C语言版)力扣(LeetCode)+牛客网(nowcoder)链表相关面试题OJ题解析(上)
递归的写法看起来简洁,实际并没有迭代写法好理解,而且在空间复杂度上也比迭代高,这里的递归写法思路主要是先向下找到尾结点后,向上逐个返回,如果等于val值,就将该节点上一个元素直接指向该节点下一个元素,等于是将该点从链表中删除了
(C语言版)力扣(LeetCode)+牛客网(nowcoder)链表相关面试题OJ题解析(上)
|
11月前
栈和队列OJ题:LeetCode--20.有效的括号
栈和队列OJ题:LeetCode--20.有效的括号:详细题解以及图解和完整代码
48 0
|
算法 API
LeetCode:剑指Offer 05. 替换空格 (字符串)
题目描述:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。