标签: anagram

如何检查两个单词是否是字谜

我有一个程序,可以显示两个单词是否是彼此的字谜.有一些例子不能正常工作,我会感激任何帮助,虽然如果它不是先进的那将是伟大的,因为我是一年级的程序员."校长"和"教室"是彼此的字谜,然而当我把"教室"改为"theclafsroom"时,它仍然说它们是字谜,我做错了什么?

import java.util.ArrayList;
public class AnagramCheck
{
  public static void main(String args[])
  {
      String phrase1 = "tbeclassroom";
      phrase1 = (phrase1.toLowerCase()).trim();
      char[] phrase1Arr = phrase1.toCharArray();

      String phrase2 = "schoolmaster";
      phrase2 = (phrase2.toLowerCase()).trim();
      ArrayList<Character> phrase2ArrList = convertStringToArraylist(phrase2);

      if (phrase1.length() != phrase2.length()) 
      {
          System.out.print("There is no anagram present.");
      } 
      else 
      {
          boolean isFound = true;
          for (int i=0; i<phrase1Arr.length; i++)
          {  
              for(int j = 0; j < phrase2ArrList.size(); j++) 
              {
                  if(phrase1Arr[i] == phrase2ArrList.get(j))
                  {
                      System.out.print("There is a common element.\n");
                      isFound = ;
                      phrase2ArrList.remove(j); …
Run Code Online (Sandbox Code Playgroud)

java string algorithm anagram

44
推荐指数
6
解决办法
14万
查看次数

查找给定单词的字谜

如果其中一个字符与另一个字的字符完全相同,则两个字是字谜.

示例:Anagram&Nagaram是anagrams(不区分大小写).

现在有很多类似的问题.找出两个字符串是否为字谜的几种方法是:

1) Sort字符串并比较它们.

2)frequency map为这些字符串创建一个并检查它们是否相同.

但是在这种情况下,我们会给出一个词(为了简单起见,我们只假设一个单词,它只有单个单词anagrams),我们需要找到它的字谜.

我想到的解决方案是,我们可以为单词生成所有排列并检查字典中存在哪些单词 .但显然,这是非常低效的.是的,字典也可用.

那么我们有什么替代方案呢?

我也在一个类似的线程中读到可以使用的东西,Tries但是这个人没有解释算法是什么,为什么我们首先使用Trie,只是在Python或Ruby中提供了一个实现.所以这并不是真的有用,这就是我创建这个新线程的原因.如果有人想要分享他们的实现(除了C,C++或Java),那么也要解释它.

language-agnostic algorithm anagram data-structures

39
推荐指数
2
解决办法
6万
查看次数

优化经常使用的anagram函数

我写了一个函数来确定两个单词是否是字谜.单词A是单词B的字谜,如果你可以通过重新排列字母来构建单词B,例如:

lead is anagram of deal
Run Code Online (Sandbox Code Playgroud)

这是我的功能:

bool is_anagram(std::string const & s1, std::string const & s2)
{
    auto check = [](std::string const & x)
    {
        std::map<char, unsigned> counter;
        for(auto const & c : x)
        {
            auto it = counter.find(c);
            if(it == counter.end())
                counter[c] = 1;
            else
                ++counter[c];
        }
        return counter;
    };

    return check(s1) == check(s2);
}
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,但随着单词数量的增加(这个函数在我的应用程序中使用了数百万次),很快就成了我应用程序的主要瓶颈.

有没有人知道如何加快这个功能?

c++ string algorithm optimization anagram

29
推荐指数
4
解决办法
3317
查看次数

分组anagram词的算法

给定一组单词,我们需要找到anagram单词并使用最佳算法单独显示每个类别.

输入:

man car kile arc none like
Run Code Online (Sandbox Code Playgroud)

输出:

man
car arc
kile like
none
Run Code Online (Sandbox Code Playgroud)

我现在开发的最佳解决方案是基于散列表,但我正在考虑将anagram字转换为整数值的等式.

示例:man =>'m'+'a'+'n'但这不会给出唯一值.

有什么建议吗?


请参阅C#中的以下代码:

string line = Console.ReadLine();
string []words=line.Split(' ');
int[] numbers = GetUniqueInts(words);
for (int i = 0; i < words.Length; i++)
{
    if (table.ContainsKey(numbers[i]))
    {
        table[numbers[i]] = table[numbers[i]].Append(words[i]);
    }
    else
    {
        table.Add(numbers[i],new StringBuilder(words[i]));
    }

}
Run Code Online (Sandbox Code Playgroud)

问题是如何开发GetUniqueInts(string [])方法.

algorithm data-processing anagram

19
推荐指数
3
解决办法
2万
查看次数

使用Python,查找单词列表的字谜

如果我有一个字符串列表,例如:

["car", "tree", "boy", "girl", "arc"...]
Run Code Online (Sandbox Code Playgroud)

为了在该列表中找到字谜,我该怎么办?例如(car, arc).我尝试为每个字符串使用for循环,我用if它来忽略不同长度的字符串,但我无法得到正确的结果.

如何查看字符串中的每个字母并将其与列表中的其他字母按不同顺序进行比较?

我已经阅读了几个类似的问题,但答案太过先进了.我无法导入任何东西,我只能使用基本功能.

python anagram

17
推荐指数
5
解决办法
7万
查看次数

Code golf:查找所有字谜

如果该单词中的字母可以重新排列以形成不同的单词,则单词是字谜.

任务:

  • 按字符排序的最短源代码,用于查找给定单词列表的所有字符集集.
  • 空格和新行应计为字符
  • 使用代码标尺

    --------- -------- 10 20 -------- -------- 30 40 -------- ---- 50 ---- -------- 60 70 -------- -------- 80 90 -------- 100 ------- 110- ------ 120

输入:

一个单词的列表,从一个新行分隔每个字标准输入.

例如

A
A's
AOL
AOL's
Aachen
Aachen's
Aaliyah
Aaliyah's
Aaron
Aaron's
Abbas
Abbasid
Abbasid's
Run Code Online (Sandbox Code Playgroud)

输出:

所有组的字谜,每组由一条单独的线分隔.

示例运行:

./anagram < words
marcos caroms macros
lump's plum's
dewar's wader's
postman tampons
dent tend
macho mocha
stoker's stroke's
hops posh shop
chasity scythia
...
Run Code Online (Sandbox Code Playgroud)

我有一个149 char perl解决方案,我会在几个人发布后发布:) …

code-golf anagram

16
推荐指数
3
解决办法
4257
查看次数

在JavaScript中的Anagrams查找器

我应该用JavaScript编写一个程序来查找所提供的一系列单词中的所有字谜.例如:"monk,konm,nkom,bbc,cbb,dell,ledl,llde"输出应分为几行:1.monk konm,nkom; bbc cbb; 戴尔·莱尔,德尔

我已将它们按字母顺序排序,即:"kmno kmno bbc bbc dell dell"并将它们放入数组中.

但是我仍然坚持比较和找到数组中匹配的anagram.

任何帮助将不胜感激.

javascript string anagram

15
推荐指数
5
解决办法
4万
查看次数

Ruby anagram求解器

我想在Ruby中编写一个anagram类型求解器,但它会对一个单词列表起作用,就像这样.

单词列表是:

the
these
one
owner
Run Code Online (Sandbox Code Playgroud)

我会允许用户输入一些字母,例如noe,并且它会在单词列表中搜索它可以使用用户输入的字母进行的单词并将带回来one,如果他们输入"eth"或甚至"the"它会带回来的the.我一直试图想出一个有效的方法来做到这一点,但我一直在循环每个单词,匹配单词中的一个字母,检查每个字母的单词和两个长度匹配.任何人都可以提出更好,更有效的方法吗?

ruby algorithm search anagram

15
推荐指数
3
解决办法
2万
查看次数

获取所有子串(拼字游戏)字符串的所有单词列表的算法?

例如,如果输入字符串是helloworld,我希望输出如下:

do
he
we
low
hell
hold
roll
well
word
hello
lower
world
...
Run Code Online (Sandbox Code Playgroud)

一直到最长的单词,这是一个helloworld子字符串的字谜.就像Scrabble一样.输入字符串可以是任意长度,但很少超过16个字符.

我已经完成了搜索并想出了像trie这样的结构,但我仍然不确定如何实际执行此操作.

substring anagram

12
推荐指数
3
解决办法
2万
查看次数

如何在保护条款中使用'in'运算符?

我想在Elixir写一个字谜检查器.它需要2个单词,第一个是参考,第二个是作为第一个可能的anagram测试.

我试图用递归和模式匹配来编写它.我in在一个保护条款中使用运算符时收到错误:

(ArgumentError)运算符输入无效的args,它在保护表达式中使用时需要右侧的编译时列表或范围

我不知道该怎么做才能解决它.这是代码(错误在第4个定义中):

defmodule MyAnagram do
  def anagram?([], []), do: true

  def anagram?([], word) do
    IO.puts 'Not an anagram, the reference word does not contain enough letters'
    false
  end

  def anagram?(reference, []) do
    IO.puts 'Not an anagram, some letters remain in the reference word'
    false
  end

  def anagram?(reference, [head | tail]) when head in reference do
    anagram?(reference - head, tail)
  end

  def anagram?(_, [head | _]) do
    IO.puts 'Not an anagram, #{head} is not in the reference …
Run Code Online (Sandbox Code Playgroud)

elixir pattern-matching anagram

12
推荐指数
1
解决办法
4303
查看次数