使用哈希比较 Anagram 的两个字符串 [关闭]

Posted

技术标签:

【中文标题】使用哈希比较 Anagram 的两个字符串 [关闭]【英文标题】:Comparing two strings for Anagram using hash [closed] 【发布时间】:2019-08-15 02:04:23 【问题描述】:

我是 perl 新手。任何人都可以举一个perl代码的例子来检测使用哈希的给定字符串之间的字谜。两个字符串 - 游泳池和马球。

【问题讨论】:

另见Word::Anagram和rosetta code: anagrams 非常感谢您的帮助。罗塞塔代码:字谜对我来说似乎很复杂。你能告诉我一些基本语法的源代码吗? 不客气。罗塞塔代码看起来很简单,请解释一下代码的哪一部分你不明白。您还可以查看Word::Anagram 模块的源代码。你可以找到它here 【参考方案1】:
sub key(_)  join "", sort split //, $_[0] 

if (key("pool") eq key("polo") 
   say "Pool and polo are anagrams of each other.";
 else 
   say "Pool and polo aren't anagrams of each other.";

如果你有一本字典,

sub key(_)  join "", sort split //, $_[0] 

my $dict_qfn = "...";
my $search = "pool";

my %anagrams;

   open(my $fh, '<', $dict_qfn)
      or die("Can't open \"$dict_qfn\": $!\n");

   while (<$fh>) 
      chomp;
      push @ $anagrams key($_)  , $_;
   


my @results = grep  $_ ne $search  @ $anagrams$search // [] ;
say "Anagrams of $search: ".( @results ? "@results" : "[none]" );

【讨论】:

使用(_)有什么特别的原因吗? (因为你还在写key($_))只是最近想用原型,还是……? @Dada,我没有利用它,但它正是原型可能有用的那种功能

以上是关于使用哈希比较 Anagram 的两个字符串 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

从 UIImage 生成哈希

leetcode-242 判断两个字符串是不是 Anagram ?

242. Valid Anagram(两个字符串包含的字符是否完全相同)

用 bcrypt (PHP) 比较两个哈希值

LeetCode 1347. Minimum Number of Steps to Make Two Strings Anagram

[leetcode]242. Valid Anagram判断两个字符串是不是包含相同字符的重排列