LeetCode 14. Longest Common Prefix
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: [“flower”,“flow”,“flight”]
输出: “fl”
示例 2:
输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
if(strs.empty()) return "";
string res;
for(int i = 0; ; i++)
{
bool flag = false;
string &first = strs[0]; //strs[0] = flower
for(auto &now : strs)
if(i >= first.size() || i >= now.size() || first[i] != now[i])//不相同
{
flag = true;
break;
}
if(flag) break;//不合法
res += first[i];
}
return res;
}
};
LeetCode 20. Valid Parentheses
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须
以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: “()”
输出: true
示例 2:
输入: “()[]{}”
输出: true
示例 3:
输入: “(]”
输出: false
示例 4:
输入: “([)]”
输出: false
示例 5:
输入: “{[]}”
输出: true
class Solution {
public:
bool isValid(string s)
{
stack<char> stk;
for(int i = 0; i < s.length(); i++)
{
if(s[i] == ')' || s[i] == ']' || s[i] == '}')
{
if(stk.size() == 0) return false;
if(stk.top() == '(' && s[i] != ')') return false;
if(stk.top() == '[' && s[i] != ']') return false;
if(stk.top() == '{' && s[i] != '}') return false;
stk.pop();
}
else
stk.push(s[i]);
}
return stk.empty();
}
};
LeetCode 43. Multiply Strings
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。
示例 1:
输入: num1 = “2”, num2 = “3”
输出: “6”
示例 2:
输入: num1 = “123”, num2 = “456”
输出: “56088”
说明:
1.num1 和 num2 的长度小于110。
2.num1 和 num2 只包含数字 0-9。
3.num1 和 num2 均不以零开头,除非是数字 0 本身。
4.不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。
class Solution {
public:
//高精度乘法
string multiply(string num1, string num2) {
vector<int