最长公共前缀
- 题目链接
最长公共前缀https://leetcode.cn/problems/longest-common-prefix/description/
- 算法原理
- 代码展示
class Solution
{
public:
string longestCommonPrefix(vector<string>& strs)
{
string ret = strs[0];
for(int i = 1; i < strs.size(); i++)
{
ret = compareFunc(ret, strs[i]);
}
return ret;
}
string compareFunc(string& s1, string& s2)
{
string ret;
for(int i = 0; i < min(s1.size(), s2.size()); i++)
{
if(s1[i] != s2[i]) return ret;
ret.push_back(s1[i]);
}
return ret;
}
};
最长回文子串
- 题目链接
最长回文子串https://leetcode.cn/problems/longest-palindromic-substring/description/
- 算法原理
- 代码展示
class Solution {
public:
string longestPalindrome(string s) {
int begin = 0, len = 0;
for(int i = 0; i < s.size(); i++)
{
int left = i, right = i;
while(left >= 0 && right < s.size() && s[left] == s[right])
{
left--;
right++;
}
if(right - left - 1 > len)
{
begin = left + 1;
len = right - left - 1;
}
left = i, right = i + 1;
while(left >= 0 && right < s.size() && s[left] == s[right])
{
left--;
right++;
}
if(right - left - 1 > len)
{
begin = left + 1;
len = right - left - 1;
}
}
return s.substr(begin, len);
}
};
二进制求和
- 题目链接
二进制求和https://leetcode.cn/problems/add-binary/description/
- 算法原理
- 代码展示
class Solution
{
public:
string addBinary(string a, string b)
{
string ret;
int up = a.size() - 1, down = b.size() - 1, t = 0;
while(up >= 0 || down >= 0 || t)
{
if(up >= 0) t += a[up--] - '0';
if(down >= 0) t += b[down--] - '0';
ret += t % 2 + '0';
t = t / 2;
}
reverse(ret.begin(), ret.end());
return ret;
}
};
字符串相乘
- 题目链接
字符串相乘https://leetcode.cn/problems/multiply-strings/description/
- 算法原理
- 代码展示
class Solution
{
public:
string multiply(string num1, string num2)
{
reverse(num1.begin(), num1.end());
reverse(num2.begin(), num2.end());
int m = num1.size(), n = num2.size();
vector<int> tmp(m + n - 1);
for(int i = 0; i < m; i++)
{
for(int j = 0; j < n; j++)
{
tmp[i + j] += (num1[i] - '0') * (num2[j] - '0');
}
}
string ret;
int t = 0, i = 0;
while(t || i < m + n - 1)
{
if(i < m + n - 1) t += tmp[i++];
ret += t % 10 + '0';
t /= 10;
}
while(ret.size() > 1 &&ret.back() - '0' == 0)
{
ret.pop_back();
}
reverse(ret.begin(), ret.end());
return ret;
}
};