南阳河南网站建设,网址你懂我意思正能量2021,wordpress 个性博客,太原seo网站排名Description
一天Rose同学想得到一个仅由01组成的字符串S#xff0c;Jack同学为了让Rose同学开心#xff0c;于是打算去商店购买另一个也仅由01组成的字符串T。而商店的字符串价格由它的长度决定#xff0c;比如字符串011售价3元#xff0c;001011售价6元#xff0c;商店…Description
一天Rose同学想得到一个仅由01组成的字符串SJack同学为了让Rose同学开心于是打算去商店购买另一个也仅由01组成的字符串T。而商店的字符串价格由它的长度决定比如字符串011售价3元001011售价6元商店可以提供任意的字符串。
心灵手巧的Jack为了省钱决定低价购入一个较短的字符串并对其进行改造改造不需要花钱但只能进行两个操作对字符串T的首部加上一个0同时对其尾部加上一个1或者对字符串T的首部加上一个1同时对其尾部加上一个0。比如字符串T为010010Jack可以将它改造为10100100或者00100101。
现在Rose已经给出了字符串S请问Jack最少需要购买多少长度的字符串使得心灵手巧的他可以把从商店购买来的字符串转化成字符串S呢
Input
多组输入第一行数字t(1≤t≤100)代表共有t组数据。
每组数据仅一行S代表Rose期望的字符串字符串仅包含0和1长度不超过10^3。
Output
对于每组输入每行请输出一个数字代表Jack需要购买的最短字符串长度。
Sample Input
3
101010
11
01101
Sample Output
0
2
1
HINT
对于第一组样例Jack可以不购买任何字符串仅凭他的两种操作就可以拼出Rose所需要的字符串S。
解析其实我们可以反着想然后把给定的两端不断拆直到不能拆(两端同为0或者1)那么此时串的长度就是我们需要购买的长度。
#include stdio.h
#include string.h
char a[1005];
int main()
{int t,l,x,y;scanf(%d,t);while(t--){scanf(%s,a);lstrlen(a);//字符串长度x0,yl-1;//左端点右端点while(xya[x]!a[y]) x,y--;//两端不同可以拆注意xy条件printf(%d\n,y-x1);//答案长度}return 0;
}