您的位置:首页 > 其它

LeetCode-Valid Anagram

2015-10-21 21:18 357 查看
Problem:

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.

Note:

You may assume the string contains only lowercase alphabets.

Follow up:

What if the inputs contain unicode characters? How would you adapt your solution to such case?

Analysis:

这个题的难度本身不大,但是做的非常痛苦,主要是对java的一些函数及语法不熟悉。

Anwser1:

public class Solution {
public boolean isAnagram(String s, String t) {
if(s==t && s=="") return true;
else if (s=="" || t=="" || s.length()!=t.length()) return false;
else{
int[] charnum = new int[26];
char c;
int temp;
for(int i=0;i<s.length();i++){
c=s.charAt(i);
temp =c-'a';
charnum[temp]++;
}

for(int j=0;j<t.length();j++){
c=t.charAt(j);
if(charnum[c-'a']<=0) return false;
else charnum[c-'a']--;
}
return true;
}
}
}


Anwser2:

public class Solution {
public boolean isAnagram(String s, String t) {
char [] a =s.toCharArray();
char [] b =t.toCharArray();
Arrays.sort(a);Arrays.sort(b);

if(String.valueOf(a).equals(String.valueOf(b)))
return true;
else
return false;
}
}


方法2用的方法是将字符串变成数组后用数组自带的排序函数进行排序,然后将字符串函数valueOf()将数组转换为字符串用equals()函数进行比较。其实用不着最后一步数组转换成字符串,因为数组也可以用equals()进行比较。如下:

Anwser3:

public class Solution {
public boolean isAnagram(String s, String t) {
char[] char1=s.toCharArray();
char[] char2=t.toCharArray();
Arrays.sort(char1);
Arrays.sort(char2);
return Arrays.equals(char1,char2);
}
}


做这道题需要注意几点:

1 字符串的toCharArray()转换为char型数组;

2 Arrays的函数引用时,Arrays中的s不要忘记;

3 字符串的函数charAt()可以找到字符串中的某一个;

4 字符串的函数length(),用的时候不要丢了括号。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: