给定一个有序的值列表,我想对具有相同值的任何成员进行分组并输出每个值的计数:
例如,
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)]
此外,我想特别对待第一个和最后一个值。执行此操作的最佳方法是什么?
给定一个有序的值列表,我想对具有相同值的任何成员进行分组并输出每个值的计数:
例如,
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)]
此外,我想特别对待第一个和最后一个值。执行此操作的最佳方法是什么?
我正在为这个问题写一个粗略的解决方案:
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 个字符,然后在读取当前字符后用前一个字符检查它的当前字符。我保留一个单独的数组进行计数。
希望有帮助...