0

给定一个有序的值列表,我想对具有相同值的任何成员进行分组并输出每个值的计数:

例如,

input: [1,1,1,3,3,2,1,1] 
output:
[(1,3),(3,2),(2,1),(1,2)]

input:['a','a','b','b','c','a']
output:
[('a',2),(b,2),(c,1),(a,1)]

此外,我想特别对待第一个和最后一个值。执行此操作的最佳方法是什么?

4

1 回答 1

0

我正在为这个问题写一个粗略的解决方案:

main()
{
     char arr[100];
     int count[100],j=0,i,n;
     for(i=0;i<100;i++)
     {
         count[i] = 0;
     }
     scanf("%d\n",&n);
     scanf("\n%c",&arr[0]);
     count[j]=1;
     for(i=1;i<n;i++)
     {
         scanf("%c",&arr[i]);
         if(arr[i-1]==arr[i])
         {
             count[j]++;
         }
         else
         {
             j++;
             count[j]=1;
         }
     }
     for(i=0;i<=j;i++)
     {
         printf("%d\n",count[i]);
     }
}

在这里,我正在从用户那里读取 n 个字符,然后在读取当前字符后用前一个字符检查它的当前字符。我保留一个单独的数组进行计数。

希望有帮助...

于 2012-10-11T06:23:58.467 回答