Algorithm 检查两个字符串是否为字谜

Algorithm 检查两个字符串是否为字谜,algorithm,stack,anagram,array-algorithms,Algorithm,Stack,Anagram,Array Algorithms,如果字符串t是s的一个字谜,我想返回true。我推送了堆栈中s的所有字符,并将t的每个字符与堆栈中的顶部元素进行比较,如果字符匹配,我将执行pop操作。如果在末尾,stack为空,这意味着字符串t是字符串s的一个字谜。这是我的密码- public boolean isAnagram(String s, String t) { char[] charArray1 = s.toCharArray(); char[] charArray2 = t.toCharArray();

如果字符串t是s的一个字谜,我想返回true。我推送了堆栈中s的所有字符,并将t的每个字符与堆栈中的顶部元素进行比较,如果字符匹配,我将执行pop操作。如果在末尾,stack为空,这意味着字符串t是字符串s的一个字谜。这是我的密码-

public boolean isAnagram(String s, String t) {
    char[] charArray1 = s.toCharArray();
    char[] charArray2 = t.toCharArray();
    if (s.length() != t.length())
    {
        return false;
    }
    Stack<Character> newStack = new Stack<Character>();
    for (int i=0; i<charArray1.length;i++)
    {
        newStack.push(charArray1[i]);
    }
    for (int j=0;j<charArray2.length;j++)
    {
        if(charArray2[j] == newStack.peek())
        {
            newStack.pop();
        }
    }
    if (newStack.isEmpty())
    {
        return true;
    }
    else
    return false;
}



error: s= "abc", t= "bac", Doesn't seem to declare these two strings as anagram
public boolean isAnagram(字符串s,字符串t){
char[]charArray1=s.toCharArray();
char[]charArray2=t.toCharArray();
如果(s.length()!=t.length())
{
返回false;
}
Stack newStack=新堆栈();

对于(inti=0;i堆栈对于这个问题是错误的数据结构,因为
peek()
只查看堆栈的顶部元素,但您希望检查
charArray2
中的每个字符是否可以在
charArray1
中的任何位置找到。一种更简单的方法是对数组排序,然后将它们作为
字符串进行比较:

public boolean isAnagram(String s, String t) {
    char[] charArray1 = s.toCharArray();
    char[] charArray2 = t.toCharArray();
    Arrays.sort(charArray1);
    Arrays.sort(charArray2);
    String string1 = new String(charArray1);
    String string2 = new String(charArray2);
    return string1.contentEquals(string2);
}

不需要显式使用堆栈。请使用以下任何方法

使用排序: 1) 对两个字符串进行排序
2) 比较排序后的字符串

“或”

计算字符数并将其存储在数组中: 此方法假定两个字符串中的可能字符集都很小。在以下实现中,假定字符使用8位存储,并且可能有256个字符。
1) 为两个字符串创建大小为256的计数数组。将计数数组中的所有值初始化为0。
2) 迭代两个字符串的每个字符,并增加相应计数数组中的字符计数。

3) 比较计数数组。如果两个计数数组相同,则返回true。

将字符串中的字符按字母顺序排序,然后compare@samgak即使字符串没有排序,上面的逻辑也应该工作,为什么要使用堆栈?