[各种面试题] 第K大的拥有个数不超过1的字符串

微策略的一道笔试题:

0和1的字符串,要求找出所有1个数不超过k个的n长度的字符串中第I大的 

有没有什么比从小到大遍历,然后数1个数是否符合条件更好的办法? 


举几个例子就会发现,其实就是求I的二进制表示:

比如 I=1 : 1

I=2: 10

I=7: 111

所以下面就不讲了。


然后是微策略的另一道流传很广的笔试题:

给一个数字字符串如:123,要你在两个数字间添加‘+’,‘-’或者‘ ’,使得最后的表达式求和为0,如1+2-3

#include
#include
#include
#include
using namespace std;

bool checkSum(string& exp)
{
	bool isNeg=false;
	int sum=0;
	int cur=0;
	for(int i=0;i=num.size())
	{
		if(checkSum(cur))
		{
			copy(cur.begin(),cur.end(),ostream_iterator(cout," "));
			cout<>s)
	{
		expression(s);
	}
}


你可能感兴趣的:(各种面试题)