Java 如何检查第一个字符串中的单词是否可以重新排列以拼写第二个字符串中的单词?

Java 如何检查第一个字符串中的单词是否可以重新排列以拼写第二个字符串中的单词?,java,string,Java,String,我正在尝试编写一个布尔方法,如果第一个字符串中的单词可以重新排列以拼写第二个字符串中的单词,那么该方法将返回true。例如,(“basketball”、“soccer”)将返回false,(“basketball”、“basketball”)将返回true 这就是我到目前为止的方法 public static boolean canSpell (String first, String second) { boolean canspell = false; if (first.con

我正在尝试编写一个布尔方法,如果第一个字符串中的单词可以重新排列以拼写第二个字符串中的单词,那么该方法将返回true。例如,(“basketball”、“soccer”)将返回false,(“basketball”、“basketball”)将返回true

这就是我到目前为止的方法

public static boolean canSpell (String first, String second) {

  boolean canspell = false;

  if (first.contains(second)) {
     canspell = true;
  }
  return canspell;
}

但是contains似乎只有在两个字符串完全相同的情况下才起作用。

下面是如何实现这一点的:

  • 从第一个和第二个字符串中删除重复项
  • 对两个字符串进行排序
  • 比较两个字符串等于或等于

    如果您对效率不太在意,以上步骤很简单


    否则,您可以使用自己的hashmap或高级数据结构。

    您要检查的是字符串是字谜。contains方法检查一个字符串是否包含在另一个字符串中完全相同。如果不是,则返回false。
    因此,一个简单的解决方法是对两个字符串进行排序并检查它们是否相等

    我的逻辑:取第二个字符串,找出每个字母是否在第一个字符串中,如果存在则删除。(这也是为了处理重复字母的情况)。如果第二个字符串中的所有字母(包括重复)都出现在第一个字符串中,则返回true。这样就可以注意重新安排

    您可以在此处找到工作函数:

    public static boolean canSpell (String first, String second) 
        {
            //String original=first;
             boolean canspell = false;
    
            for(int i=0;i<second.length();i++)
            {
                char a=second.charAt(i);
                if(first.indexOf(a)>=0)
                {
                    int b=first.indexOf(a);
                    first = first.substring(0, b) + first.substring(b+1);
                    canspell=true;
                    continue;
                }
                else
                {
                    canspell=false;
                    break;
                }
            }
            return canspell;
        }
    
    publicstaticboolearncanspell(字符串第一,字符串第二)
    {
    //字符串原始=第一个;
    布尔值=false;
    对于(int i=0;i=0)
    {
    int b=第一个索引f(a);
    first=first.substring(0,b)+first.substring(b+1);
    canspell=true;
    持续
    }
    其他的
    {
    canspell=false;
    打破
    }
    }
    回传咒语;
    }
    
    关注字母。我不会说更多,因为这是你的家庭作业。你的第二个例子与“重新安排”一词不一致。您要做的是查找第二个字符串中的每个字母在第一个字符串中的出现次数是否相同。如果需要进一步增强,请告诉我