算法计数

时间:2015-05-25 09:02:27

标签: python algorithm

我在这种情况下有点困惑:让我们说从1到9的数字代码我们有一个从1到9的数字。如果数字已经达到数字9,那么它再次从1到9循环再次,它从数字1开始。中的每个数字继续显示为随机数,如下例所示:

  

... 1111122222333334444445555556666667777777888888999999111111222222333333444445555566677778899

然后问题是我需要一个算法或代码来检测 4号是否出现我想把它算作1,但我想要消除继续从4号其他出现(我没有想要算数4的继续。对不起,如果不是一个明确的解释。从示例中可以更好地解释一下。这个例子: 如果数据是

  

111122233 4 445556667788999111222333 4 44455566677788899

所以计数程序必须为2,因为数字4显示两次(我标记第一个出现的数字4),并且该数字的继续不计数。哦,是的所有这个数字(1-9)它总是继续出现随机数字继续。

感谢您的帮助: - )

2 个答案:

答案 0 :(得分:1)

如果号码至少出现一次,你可以计算" edge"即

n = numstr.count("34")

(显然需要按顺序测试起始编号作为特例(即如果查看" 91" s的数量)

EDIT。在评论中提到重大修订之后,您将不得不采取以下措施:

a = [66,69,69,77,78,80,84,84,91,91,96,96,100,100,109,116,116,124,124,137,137,140,66,66,66,78,78,80,80,80,84]
c = {a[0]:1}
for i in range(1, len(a)):
  if a[i] != a[i-1]:
    if a[i] in c:
      c[a[i]] += 1
    else:
      c[a[i]] = 1

答案 1 :(得分:-1)

让我们假设您将数字作为字符串。

让字符串包含所有这些数字。 我将在c。

中提出一个代码
 int count=0,flag=0;
 for(int i=0;i<strlen(str);i++){
     if(flag==0){
         if(str[i]=='4'){
            count=count+1;
            flag=1;
            continue;
         }
     }
     if(flag==1 && str[i]=='4')
        continue;
     flag=0;
  }
  printf("%d\n",count);

Count是您问题的答案。