一个函数 | ||||||
|
||||||
Description | ||||||
现在用一个函数来处理一个字符串(该字符串只包含x和y)。 函数的两个操作如下。 1. 在字符串中找到两个连续的字符(可以不相邻),并且第一个字符是’y’,第二个字符是’x’,然后交换它们。如果一次存在多种满足该条件的连续字符,我们就找到最靠近字符串开始位置的那组进行操作。 2. 在字符串中找到两个连续的字符(可以不相邻),并且第一个字符是’x’,第二个字符是’y’, 然后从原串中将这两个字符删除。如果一次存在多种满足该条件的连续字符,我们就找到最靠近字符串开始位置的那组进行操作。 函数的运行步骤如下: Step1: 如果你对当前的字符串至少可以进行上面两个操作中的一个,就进入Step2,否则函数运行结束。 Step2:如果你可以进行1 操作就执行它。否则执行2操作1次,2操作结束后进入Step1. 请输出函数运行结束之后经过处理符串。 |
||||||
Input | ||||||
输入一个字符串,保证字符串不为空且仅由’x’和’y’组成。字符串长度为1~106。 | ||||||
Output | ||||||
输出函数返回值。
保证测试数据不会让返回值为空串。 |
||||||
Sample Input | ||||||
x yxyxy xxxxxxy |
||||||
Sample Output | ||||||
x y xxxxx |
||||||
Author | ||||||
曾卓敏 @hrbust |
#include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> #include<math.h> using namespace std; char a[1000000]; char b[1000000]; int main() { while(~scanf("%s",a)) { int i; int xnum=0,ynum=0; int key=strlen(a); for(i=0;i<key;i++) { if(a[i]=='x') { xnum++; } else { ynum++; } } int k; if(xnum>ynum) { k=xnum-ynum; for(i=0;i<k;i++) { printf("x"); } } else { k=ynum-xnum; for(i=0;i<k;i++) { printf("y"); } } printf(" "); } return 0; }