Description
Write a method anagram(s,t)
to decide if two strings are anagrams or not.
Clarification
What is Anagram?
- Two strings are anagram if they can be the same after change the order of characters.
Example
Given s = "abcd"
, t = "dcab"
, return true
.
"ab"
, t = "ab"
, return true
.Given s = "ab"
, t = "ac"
, return false
. Challenge
O(n) time, O(1) extra space
解题:题目给定两个字符串,判断这两个字符串除了字符字符顺序不同外,是否相等。最容易想到的还是将字符排序,判断对位字符是否相等。不过在java中,要对字符串中的字符排序,只能转化成字符数组,那么就不满足challenge条件了。但是用其他方法(例如哈希表),代码就只能处理字母或者ASCII中的字符,有损通用性,没什么意思。贴一下排序方法的代码:
1 public class Solution { 2 /** 3 * @param s: The first string 4 * @param t: The second string 5 * @return: true or false 6 */ 7 public boolean anagram(String s, String t) { 8 // write your code here 9 char[]arr_s = s.toCharArray();10 char[]arr_t = t.toCharArray();11 Arrays.sort(arr_s);12 Arrays.sort(arr_t);13 return String.valueOf(arr_s).equals(String.valueOf(arr_t));14 }15 }