数据结构字符串相关代码(数据结构笔试复测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牛客)的主要内容,如果未能解决你的问题,请参考以下文章