im은 python에 처음 익숙해지며, 지금까지 잘하고 있습니다. 그러나이 문제는 나를 죽이고 있습니다.문자열의 역전을 계산합니다.
는 문제점 :
시퀀스의 반전은 고장의 항목이 한 쌍이다. 예를 들어, F는 문자열의 앞부분에 나타나지만 나중에 알파벳에 나타나기 때문에 F와 D 문자는 'ABBFHDL'문자열에서 반전을 형성합니다. 문자 H와 D는 또한 반전을 형성합니다. 시퀀스의 총 역전 수, 즉 순서가 잘못된 쌍의 수는 시퀀스가 정렬되지 않은 방법의 척도이다. 'ABBFHDL'에있는 역전의 총 수는 2입니다. 대문자 A ~ Z의 시퀀스 (문자열)를 취하여 시퀀스의 역변환 횟수를 반환하는 함수 inversions()를 구현하십시오.
내가 지금까지 가지고 것은 다음
def inversions(s):
count = 0
for i in range(len(s)): # for each index i
for j in range(len(s)): # for each index J
if s[j]>=s[i]: # compare string[i] and string[j]
count += 0
else:
count +=1
return count
등이 정확하지 충분히 멀리 RABIT 구멍 좋은 부분 크레딧 :(
이 나에게 일을 제공을 얻으려면 아래 아닙니다의를 . 궁금 무엇 메신저
(2이어야한다)이이 달성하기 위해 코드를 작성하는 방법입니다, 지금 큰 장애물이다 : 큰 각 인덱스 j에 대한 #보다 내가
내가 이것들을 시도,내가 몇 가지 코드를 시도했지만 난 일하러 해달라고 :
는for j in range(len(s)>i): # the result i get is 1
for j in range(len(s)<i): # the result i get is 'blank
for j in range(len(s)>s[i]): # the result i get is this error message :
for j in range(len(s)>s[i]):
TypeError: unorderable types: int() > str()
내가 뭘 달성 할 수없는 것은 순서 (문자열)의 모든 가능한 쌍을 통해 기능으로 반복을 얻는 것입니다.
(즉, AA, AB, AB, AF, AH, AD, AL, BB, BB, BF, BH, BD, BL 중 하나는 카운트를 렌더링하지 않지만 반복이 F에 도달하면 반전 2)
난 그냥 캔트 내 코드와 함께 거기 때문에 대답, HD에 대한 다음 FD에 대한 계산합니다.
내 나쁜,하지만 대답은 2 시퀀스 F가 D보다 먼저 나오고 H가 D가되기 때문에 - 역변환은 2이므로. 죄송합니다. 처음 쓰는 순간 너무 조금 빨랐습니다. – Snarre
@ user2394720 "시퀀스의 역변환"에 대한 정의를 다시 말씀해 주시겠습니까? 위의 코드가 맞다면 항목 쌍으로 언급했습니다. . – ParokshaX
ok, 순서의 역전의 총 수, 즉 순서가 잘못된 쌍의 수입니다. 이것은 인접한 쌍뿐 아니라 시퀀스에서 항목의 가능한 모든 쌍입니다. EXE : AA, AB, BB, AF, FH, HD, DL 등 이 쌍 중 하나라도 alpahbetical order가 아니면 알고리즘에 +1이 추가되어야합니다. 내 문제는 내가 할 수있는 모든 시퀀스에서 가능한 모든 쌍을 반복하는 루프를 작성하는 방법을 알아낼 수없는 것 (문자열)입니다. A로 시작하는 시퀀스의 모든 문자를 다음 문자와 비교해야한다고 생각합니다. – Snarre