2 solutions

  • 0
    @ 2021-12-14 12:34:44
    #include<bits/stdc++.h>
    using namespace std;
    char a[1000000];
    char b[1000000];
    int main(){
    	int n;
    	cin>>n;
    	if(n==0){
    		printf("")//麻了,这一步卡了。
    	}
    	else{
    		cin>>a;
    		int num=1;
    		int j=0;
    		for(int i=0;i<strlen(a);i++){
    			if(a[i]==a[i+1]){
    					num++;
    			}
    			else{
    				b[j]=num+'0';
    				b[j+1]=a[i];
    				j=j+2;
    				num=1;
    			}
    		}
    		printf("%d\n",strlen(b));
    		puts(b);
    	}
    	
    	return 0;
    } 
    
    • 0
      @ 2021-10-25 23:02:28

      这个题是一个字符串问题。对字符串处理对于新手来说也是不容易的,过的人还不少,大家还是挺不错的。为了降低难度,提前给出了字符串的长度,保证数字只占一位。相信大家经过练习,以后做这个题就会变得得心应手了~

      update:2021/12:由@keptree 增加了一组数据,需要考虑n为0的情况的输出,应该是一个空串!

      参考代码:

      #include<stdio.h>
      #include<string.h>
      int main()
      {
      	char a[120],s[120];
      	int l1,i,j=0;
      	scanf("%d\n",&l1);
      	if (n==0)
      	{
      		printf("");
      		return 0;
      	}
      	gets(a);
      	for (i=0;i<strlen(a);i++)
      	{
      		int ii=1;
      		while (a[i]==a[i+ii])
      		{
      			ii++;
      		}
      		 	s[j]=ii+48;
      		 	j++;
      		  s[j]=a[i];
      		  j++;
      		  i=i+ii-1; 
      	}
      	printf("%d\n",strlen(s));
      	puts(s);
      	return 0;
      }
      
      • 1

      Information

      ID
      131
      Time
      1000ms
      Memory
      256MiB
      Difficulty
      9
      Tags
      # Submissions
      172
      Accepted
      13
      Uploaded By