0

文字列がパングラム (アルファベットのすべての文字を含む文) であるかどうかをテストする方法を見たことがありますが、よくわかりませんでした。自分のやり方がうまくいかない理由を知りたい。

def is_pangram(string)

  alpha = ("a".."z").to_a
  i = 0
  while i < string.length
    if string.downcase[i] == alpha.any? 
        alpha.delete(string.downcase[i])
    end
    i += 1
  end

  if alpha.length > 0
    puts "This string is not a pangram"
  else
    puts "This string is a pangram"
  end

  puts alpha.length
  puts alpha
end

is_pangram("The quick brown fox jumps over the lazy dog")
4

3 に答える 3

0

でもよく分からなかった

(意図した) アルゴリズムは、アルファベットのすべての (26) 文字を含む配列を構築します。次に、文字列を 1 文字ずつ処理し、最初の配列からその文字を削除します (まだそこにある場合)。その後、最初の配列が空かどうかを単純にテストします。その場合、文字列内の文字によって配列内のすべての文字が削除されるため、文字列はパングラムになります。そうでない場合は、文字列内の一部の文字が「欠落」しており、その文字はまだ配列内にあります。

于 2018-10-10T17:35:41.120 に答える