数据结构字符串相关代码(数据结构笔试复测Leecode牛客)

Posted 小葵花幼儿园园长

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构字符串相关代码(数据结构笔试复测Leecode牛客)相关的知识,希望对你有一定的参考价值。

提示:这些是自己整理 可以借鉴 也可能存在错误 欢迎指正

字符串


基础知识

题目

简单

中等

1.大数加法

描述

以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。

数据范围:s.length,t.length≤100000,字符串仅由’0’~‘9’构成
要求:时间复杂度 O(n)

思路:

  • 大整数相加,就可以按照整数相加的方式,从个位开始,逐渐往上累加,换到字符串中就是从两个字符串的末尾开始相加。
class Solution 
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 计算两个数之和
     * @param s string字符串 表示第一个整数
     * @param t string字符串 表示第二个整数
     * @return string字符串
     */
    string solve(string s, string t) 
        // write code here
        if(s.empty())
            return t;
        if(t.empty())
            return s;
        //s记录比较大的数---保存结果
        if(s.length() < t.length())
            swap(s, t);
        //进位标志 flag
        int flag = 0;
        //从最后一位开始相加
        for(int i=s.length()-1; i>=0; i--)
            int temp = s[i] -'0'+flag;//转数字
            int j = i-s.length()+t.length(); //t的最后一位开始
            if(j >= 0)
                temp = temp + t[j] - '0';
            
            flag = temp/10;
            temp = temp % 10;
            s[i] = temp + '0';
        
        if(flag == 1)
            s = '1' + s;
        return s;
    
;

最长公共子串

描述

给定两个字符串str1和str2,输出两个字符串的最长公共子串
题目保证str1和str2的最长公共子串存在且唯一。 

解题思路

  • 动态规划
  • dp[i][j] = dp[i-1][j-1] +1; else dp[i][j] =0
class Solution 
public:
    /**
     * longest common substring
     * @param str1 string字符串 the string
     * @param str2 string字符串 the string
     * @return string字符串
     */
    string LCS(string str1, string str2) 
        // write code here
        vector<vector<int>> dp(str1.length()+1, vector<int>(str2.length()+1,0));
        dp[0][0] = 0;
        int max=0, pos=0;
        for(int i=1; i<=str1.length(); i++)
            for(int j=1; j<=str2.length(); j++)
                if(str1[i-1] == str2[j-1])
                    dp[i][j] = dp[i-1][j-1] +1;
                else
                    dp[i][j] = 0;
                if(dp[i][j] > max)
                    max = dp[i][j];
                    pos = i-1;
                
             
        
        return str1.substr(pos-max+1, max);
    
;

以上是关于数据结构字符串相关代码(数据结构笔试复测Leecode牛客)的主要内容,如果未能解决你的问题,请参考以下文章

数据结构栈队列相关代码(数据结构笔试复测Leecode牛客)

数据结构数组相关代码(数据结构笔试复测Leecode牛客)

关于排序的相关代码(数据结构笔试复测Leecode牛客)

数据结构树相关代码(数据结构笔试复测Leecode牛客)

基础算法(数据结构笔试复测Leecode牛客)

动态规划(数据结构笔试复测Leecode牛客)