资料:
size()//获取字符串长度
insert()//插入字符串
append()//插入字符串
erase()//删除任意字符,时间复杂度O(n),n为字符串长度
substr()//截取字符字串
back()//获取最后一个字符
pop_back()//删除最后一个字符,时间复杂度O(1)
empty()//判断是否为空
clear()//清空字符串
c++ string用法 入门必看 超详细-CSDN博客
自己写的(未通过):
必须得按照题目给的排列规则。
#include <algorithm>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型
* @return string字符串vector
*/
vector<string> dfs(int n){
if(n == 1){
vector <string> a;
a.push_back("()");
return a;
}
vector <string> strN_ = dfs(n-1); // n-1的结果
vector <string> strN; //n的结果
for(int i = 0; i < strN_.size(); i++){
strN.push_back("(" + strN_[i] + ")");
}
for(int i = 0; i < strN_.size() - 1; i++){
strN.push_back(strN_[i] + "()" );
}
for(int i = 0; i < strN_.size(); i++){
strN.push_back("()" + strN_[i] );
}
sort(strN.begin(), strN.end());
return strN;
}
vector<string> generateParenthesis(int n) {
// write code here
return dfs(n);
}
};
模板的:
#include <algorithm>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型
* @return string字符串vector
*/
void dfs(int left, int right, int n, string str, vector<string> &res){
if(left == n && right == n){
res.push_back(str);
return;
}
if(left < n)
dfs(left+1, right, n, str+"(", res);
if(right < n && left > right) //关键规律:left > right
dfs(left, right+1, n, str+")", res);
}
vector<string> generateParenthesis(int n) {
// write code here
string str;
vector<string> res;
dfs(0, 0, n, str, res);
return res;
}
};