Algorithm 检查两个字符串是否为字谜
如果字符串t是s的一个字谜,我想返回true。我推送了堆栈中s的所有字符,并将t的每个字符与堆栈中的顶部元素进行比较,如果字符匹配,我将执行pop操作。如果在末尾,stack为空,这意味着字符串t是字符串s的一个字谜。这是我的密码-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();
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即使字符串没有排序,上面的逻辑也应该工作,为什么要使用堆栈?