题意:有一个由‘0’和‘1’组成的字符串,‘10’结构可以删除1或者删去0,给你一个这样的字符串问最短的字符串是怎么样的并输出
思路:规律,找第一个出现的1和最后一个出现的0,可以通过find函数来找1返回第一个1出现的额位置,用rfind函数来找0,返回最后一个0的位置,如果找不到1或0的话说明现在的这个字符串就是最简洁的,拷贝给目标字符串输出就可以,如果找到了且first<last,将first之前的字符拷贝给目标字符串,以及last及其之后的字符拷贝给目标字符串并输出,但是我提交了不对,发现漏了一个很重要的事情!!!没注意审题,他还要输入一个长度,而且字符串是在这个长度的基础上进行删减
#include<bits/std++.h>
using namespace std;
int main()
{
int n,size;
string s;
cin>>n;
while (n--)
{
string str,ans;
char first,last;
int length;
cin>>length;
cin>>str;
first=str.find('1');
last=str.rfind('0');
if (first==string::npos||last==string::npos)//只有1或者0的话
{
ans.append(str);
}
else
{
if (first<last)
{
ans=str.substr(0,first);
ans+=str.substr(last);
}
else ans.append(str);
}
cout<<ans<<endl;
}
return 0;
}