题目:
Given two strings s and t, write a function to determine if t is an anagram of s.
For example,
s = "anagram", t = "nagaram", return true.
s = "rat", t = "car", return false.
就是要找出上述的两个字符串是不是一样的,也就是说是不是他们中的长度是不是一样,而且出现的字符是不是一样,并且出现相同字符的次数是不是也一样。
题解:这题正好和我看的《Java程序员面试宝典(第三版)》中的P75中的一道求一个字符串中的出现次数最多的那个字符的字母和次数类似,于是我就套用了这道题中的算法。
具体的方法是这样,首先是用了两个list来将字符串中的每一个字符都输入进去,然后就是用Collections.sort(list)的方法用来将list中的每一个字符进行排序。排完序后就可以用一一对应的方式来依次对每一个字符进行比较,如果最后知道末尾,都一样,那么就返回true,否则就返回false。
public boolean isAnagram(String s,String t)
{
//char s1[] = s.toCharArray();
//char t1[] = t.toCharArray();
boolean test = true;
if(s.length() != t.length())
return test = false;
else
{
ArrayList lists1 = new ArrayList();
ArrayList lists2 = new ArrayList();
for (int i = 0; i < s.length(); i++)
{
lists1.add(String.valueOf(s.charAt(i)));
lists2.add(String.valueOf(t.charAt(i)));
}
Collections.sort(lists1);
System.out.println(lists1);
Collections.sort(lists2);
System.out.println(lists1);
Iterator iter1 = lists1.iterator();
Iterator iter2 = lists2.iterator();
while(iter1.hasNext())
{
String str1 = (String)iter1.next();
String str2 = (String)iter2.next();
if(!str1.equals(str2))
{
test = false;
break;
}
}
return test;
}
}