京东测试编程题

//1.字符串
#include<bits/stdc++.h>

using namespace std;

int main(){
	string s;

	cin >> s;

	int n = s.length();
	int i = n-1;
	while(s.substr(0,i) != s.substr(n-i,i))
		i--;
	cout << s.substr(0,n-i) << s << endl;

	return 0;

}

//2.括号题(AC 90%  暴力深搜  循环超时。。有没有优化思路)
#include<bits/stdc++.h>

using namespace std;

int res;

bool isvaild(string s){
	int n = s.length();
	if(n == 0)
		return true;
	if(n % 2 == 1)
		return false;
	stack<char> t;
	for(int i = 0;i < n;i++){
		if(s[i] == '(')
			t.push(s[i]);
		else if(s[i] == ')'){
			if(t.empty())
				return false;
			else
				t.pop();
		}
	}
	return true;
}



void dfs(string s){
	if(s.empty())
		res++;
	else{
		string temp(s.begin()+1,s.end());
		string st;
		for(int i = 0;i < temp.length();i++){
			if(temp[i] == ')'){
				st = temp;
				st.erase(st.begin()+i);
				if(isvaild(st)){
					dfs(st);
				}
			}
		}
	}
}

int main(){
	string s;
	cin >> s;
	res = 0;
	string t;
	dfs(s);

	cout << res << endl;

	return 0;
}

全部评论

相关推荐

ArisRobert:统一解释一下,第4点的意思是,公司按需通知员工,没被通知到的员工是没法去上班的,所以只要没被通知到,就自动离职。就是一种比较抽象的裁员。
点赞 评论 收藏
分享
牛客618272644号:佬携程工作怎么样,强度大吗
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务