2016-08-15 2 views
-1

코드가 작동하지 않는 이유가 확실하지 않습니다. 내 논리가 옳다고 생각합니까?Ruby에서 문자열의 X와 O를 계산합니다.

ExOh (str) 함수가 전달되는 str 매개 변수를 가져오고 같은 수의 x와 o가 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 이 두 문자 만 문자열에 입력되며 구두점이나 숫자는 사용되지 않습니다. 예를 들어 : str이 "xooxxxxooxo"이면 6x 및 5o가 있기 때문에 결과는 false를 반환해야합니다.

ExOh(str) 
i = 0 
length = str.length 
count_x = 0 
count_o = 0 

while i < length 
if str[i] == "x" 
    count_x += 1 
elsif str[i] == "o" 
    count_o += 1 
end 
i+=1 
end 
    if (count_o == count_x) 
     true 
    elsif (count_o != count_x) 
    false 
end 
end 

답변

2

코드의 문제점은 함수 선언입니다. 처음에는 def ExOh(str)을 사용하십시오. 들여 쓰기를하면 도움이 될 수 있습니다. 그런데

def ExOh(str) 
    i = 0 
    length = str.length 
    count_x = 0 
    count_o = 0 

    while i < length 
    if str[i] == "x" 
     count_x += 1 
    elsif str[i] == "o" 
     count_o += 1 
    end 
    i+=1 
    end 

    if (count_o == count_x) 
    true 
    elsif (count_o != count_x) 
    false 
    end 
end 

, https://ruby-doc.org/core-2.2.0/String.html#method-i-count

def ExOh(str) 
    str.count('x') == str.count('o') 
end 
+0

당신은 너무 그것을 나를 이길 COUNT 개 표준 라이브러리를 사용하여 간단한 해결책. 카운트를 사용하는이 간단한 솔루션은 가장 좋은 방법입니다. – Schylar

+0

Omg, 내가 처음에는 def를 잊어 버린 것을 믿을 수 없어 고맙다고 생각합니다. 왜 작동하지 않았는 지 내 머리를 두 드렸습니다! – Thulasi

관련 문제