首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >pangram测试

pangram测试
EN

Stack Overflow用户
提问于 2018-10-10 21:42:29
回答 3查看 323关注 0票数 0

我见过一种测试字符串是否为pangram的方法--一个包含字母表中每个字母的句子--但我不太理解它。我想知道为什么我的方法行不通。

代码语言:javascript
运行
复制
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")
EN

回答 3

Stack Overflow用户

发布于 2018-10-10 23:35:18

Aleksei已经回答了这个问题...这里有一种稍微干净一点的方法。

代码语言:javascript
运行
复制
def is_pangram(string)

  alpha = ("a".."z").to_a
  string.downcase.split("").each do |i|
    alpha.delete(i) if alpha.include?(i)
  end

  if alpha.empty?
    puts "This string is a pangram"
  else
    puts "This string is not a pangram"
  end

  puts alpha.length
  puts alpha
end

is_pangram("The quick brown fox jumps over the lazy dog")
票数 1
EN

Stack Overflow用户

发布于 2018-10-11 04:00:01

下面的内容如何?

代码语言:javascript
运行
复制
def is_pangram?(str)
  str.downcase.scan(/[a-z]/).uniq.size == 26
end

is_pangram? "The quick brown dog jumps over the lazy fox."
  #=> true
is_pangram? "The quick brown dog jumps over the wary fox."
  #=> false
票数 1
EN

Stack Overflow用户

发布于 2018-10-11 01:35:41

,但我不太理解它

(预期的)算法构建了一个包含字母表中所有(26)个字母的数组。然后,它逐个字符地处理字符串,从第一个数组中删除该字符(如果它仍然在那里)。之后,它简单地测试第一个数组是否为空。如果是这样的话,字符串中的字符已经导致了数组中所有字符的移除,因此该字符串是一个pangram。如果不是,则说明字符串中缺少某些字符,且该字符仍在数组中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52741644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档