Ruby 如何查找符号在字符串中重复的次数
如何找到符号在字符串中重复的次数Ruby 如何查找符号在字符串中重复的次数,ruby,string,Ruby,String,如何找到符号在字符串中重复的次数 def duplicate_count(text) t = text.downcase t... end Test.assert_equals(duplicate_count("abc"), 0) Test.assert_equals(duplicate_count("abcdeaa"), 1) Test.assert_equals(duplicate_count("abcdeaB"), 2) 一方面,它不漂亮,但有效: def duplicates
def duplicate_count(text)
t = text.downcase
t...
end
Test.assert_equals(duplicate_count("abc"), 0)
Test.assert_equals(duplicate_count("abcdeaa"), 1)
Test.assert_equals(duplicate_count("abcdeaB"), 2)
一方面,它不漂亮,但有效:
def duplicates string
string.downcase.split('')
.group_by { |i| i }
.to_a
.select { |i| i[1].size > 1 }
.size
end
duplicates "abc" #=> 0
duplicates "abcdeaa" #=> 1
duplicates "abcdeaB" #=> 2
稍微好一点的实现:
def duplicates string
string.downcase.split('')
.group_by { |i| i }
.values
.select { |i| i.size > 1 }
.size
end
基于@sagarpandya2答案
def duplicate_count(text)
text.downcase.chars.group_by(&:to_s).count { |v| v[1].count > 1 }
end
散列。新的(0)
通常称为计数散列。请参阅,特别是参考默认值(此处为0
)。def dupe\u count(文本、数据)
text.scan(数据).count
结束
dupe_count(“abcc”,“c”)#@KirillZhuravlov更新了一个更好的版本:)考虑text.downcase.each_char.group_by(&:本身)。count{124; uv,v.count>1}
。返回枚举数,避免使用chars
返回的临时数组。比
对_更具表现力,但仅从v2.2开始出现。我个人更喜欢groupby{s}
而不是groupby(&:to_s)
,我觉得这有点太可爱了。
def count_dups(str)
str.each_char.with_object(Hash.new(0)) {|c,h| h[c.downcase] += 1}.count {|_,v| v >= 2}
end
count_dups "abc" #=> 0
count_dups "abcdeaa" #=> 1
count_dups "abcdeaB" #=> 2
def dupe_count(text, data)
text.scan(data).count
end
dupe_count("abcc", "c") #<= 2
dupe_count("test", "t") #<= 2
dupe_count("lost", "w") #<= 0