给定一个有序的值列表,我想对具有相同值的任何成员进行分组并输出每个值的计数:
例如,
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)]
另外,我想特别处理第一个和最后一个值。这样做的最佳方式是什么?
答案 0 :(得分: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个字符,然后在读取当前字符后用前一个字符检查当前字符。我为计数保留了一个单独的数组。
希望有帮助...