简单来说这道题要把同字符A*4(不让我打四个A)变成4A,异字符ABC变成1ABC1,1变成11;
现在我做了个结构数组ab,a存放按三种类型切割的字符串,b对应转码
然后输出不知道为什么会有框框
快疯了
input:AAAAAABCCCC12344
output:6A1B14C11123124
我的output:A1B1C1112314
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
struct encryption{
char a[10] = {0};
char b[10] = {0};
};
int main ()
{
char input[100];
cin >>input;
int len = strlen(input);
encryption str[100];
//切割 ,后同前不同换行,前后都不同不换,前同不换,如果有1单独出列 (优先检查
//这段代码没有问题
for (int i=0,j=0,k=0;i<len;i++){
if (input[i] == 49)
str[k++].a[0] = 49;
else if(input[i]!=input[i+1]&&input[i]==input[i-1]){
str[k++].a[j] = input[i];
j = 0;
}
else if(input[i]!=input[i+1]&&input[i+1]==input[i+2]){
str[k++].a[j] = input[i];
j = 0;
}
else
str[k].a[j++] = input[i];
}
//转换
for (int i=0;str[i].a[0];i++){
if (str[i].a[0] == str[i].a[1]){ //同字符串
str[i].b[0] = strlen(str[i].a);
str[i].b[1] = str[i].a[0];
}
else if (str[i].a[0] == 49){ //1
str[i].b[0] = '1';
str[i].b[1] = '1';
}
else if (str[i].a[0] != str[i].a[1]){ //不同字符串
str[i].b[0] = '1';
int j;
for (j=1;j<=strlen(str[i].a);j++)
str[i].b[j] = str[i].a[j-1];
str[i].b[j] = '1';
}
}
//输出
int i = 0,j = 0;
while (str[i].b[0]){
while (str[i].b[j]){
cout <<str[i].b[j++];
}
i++;
j = 0;
}
return 0;
}