class Solution(object):
def numberOfArithmeticSlices(self, A):
"""
:type A: List[int]
:rtype: int
"""
if len(A) < 3:
return 0
else:
res = 0
count = 0
for i in range(2, len(A)):
if A[i] - A[i - 1] == A[i - 1] - A[i - 2]:
count += 1
res += count
else:
count = 0
return res
# print Solution().numberOfArithmeticSlices([1, 2, 3, 4])
# encoding=utf-8
import sys
'''
A = [1, 2, 3, 4]
return: 3, for 3 arithmetic slices in A: [1, 2, 3], [2, 3, 4] and [1, 2, 3, 4] itself.
【解题思路】
(1) 定义一个与给定数组一样长度的记录等差数组元素个数的数组
(2) 如果当前数组前面是等差数组就在前面的数组值基础上+1,如果不是就设置当前数组个数为3
(3) 最后返回满足条件的数组的个数
'''
class Solution(object):
def numberOfArithmeticSlices(self, A):
"""
:type A: List[int]
:rtype: int
"""
if len(A)==0 or len(A) == 1 or len(A) == 2:
return 0
elif len(A) == 3:
if (A[1] - A[0]) == (A[2] - A[1]):
return 1
else:
return 0
else:
dp = [0] * len(A)
a=A[1]-A[0]
b=A[2]-A[1]
dp[0]=1
dp[1]=2
if a==b:
dp[2]=3
else:
dp[2]=2
for i in range(3,len(A)):
if (A[i]-A[i-1])==(A[i-1]-A[i-2]):
if dp[i-1]>=3:
dp[i]=dp[i-1]+1
else:
dp[i]=3
else:
dp[i]=2
res=0
for i in dp:
if i>=3:
res+=(i-3+1)
return res
A = map(int, sys.stdin.readline().strip().split(","))
print Solution().numberOfArithmeticSlices(A)