我的代码:
def inversions(s):
last = ''
count = 0
for letter in s:
if letter > last:
count += 1
last = letter
return count
但是我做了并且错误了一些它不合适的地方。 示例调用:
inversion('ABBFHDL')
2
但我的回报为5。
答案 0 :(得分:0)
根据您的评论,获取无序序列的总数并不像代码所示那么容易。以下是我实现目标的一种方法。
假设s
中的字母都是大写的。我使用字典来存储已访问过的字母数。通过从字母迭代到Z
def inversions(s):
nums = dict()
count = 0
for ch in s:
for i in range(ord(ch) + 1,ord('Z')+1):
count += nums.get(i,0)
if nums.has_key(ord(ch)):
nums[ord(ch)] += 1
else:
nums[ord(ch)] = 1
return count
答案 1 :(得分:0)
假设一个序列是无序的'如果你按顺序遇到同一个角色或先于你的角色。
def solution(str):
count = 0
for i in range(len(str)-1):
if str[i] >= str[i+1]:
count += 1
return count
给你:
Python 2.7.3 (v2.7.3:70274d53c1dd, Apr 9 2012, 20:52:43)
>>>solution('ABBFHDL')
>>>2