我在这种情况下有点困惑:让我们说从1到9的数字代码我们有一个从1到9的数字。如果数字已经达到数字9,那么它再次从1到9循环再次,它从数字1开始。中的每个数字继续显示为随机数,如下例所示:
... 1111122222333334444445555556666667777777888888999999111111222222333333444445555566677778899
然后问题是我需要一个算法或代码来检测 4号是否出现我想把它算作1,但我想要消除继续从4号其他出现(我没有想要算数4的继续。对不起,如果不是一个明确的解释。从示例中可以更好地解释一下。这个例子: 如果数据是
111122233 4 445556667788999111222333 4 44455566677788899
所以计数程序必须为2,因为数字4显示两次(我标记第一个出现的数字4),并且该数字的继续不计数。哦,是的所有这个数字(1-9)它总是继续出现随机数字继续。
感谢您的帮助: - )
答案 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是您问题的答案。