Skip to content
Open
Changes from 1 commit
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
0cece46
push test
liuyunjian-leya Apr 10, 2019
9f9fc2d
array sort
liuyunjian-leya Apr 16, 2019
33d9233
add leetcode running's comments
liuyunjian-leya Apr 16, 2019
64fe4e6
922
liuyunjian-leya Apr 17, 2019
7bd3fb2
merge-two-sorted-lists
liuyunjian-leya Apr 17, 2019
2db7ce0
delete duplicate node of sorted list
liuyunjian-leya Apr 17, 2019
7f00b0f
binary tree's longest-univalue-path. use recursion
liuyunjian-leya Apr 18, 2019
3668950
stack: valid-parentheses
liuyunjian-leya Apr 18, 2019
29b8d6d
add README
liuyunjian-leya Apr 18, 2019
74e8b0d
array valid-anagram
liuyunjian-leya Apr 19, 2019
18ed825
add array valid-anagram
liuyunjian-leya Apr 19, 2019
b71a3ce
week 1 note
liuyunjian-leya Apr 19, 2019
0c9e841
format NOTE
liuyunjian-leya Apr 19, 2019
1078f8e
hash+list https://leetcode-cn.com/problems/top-k-frequent-words/submi…
aiter Apr 23, 2019
718872c
binary tree https://leetcode-cn.com/problems/second-minimum-node-in-a…
aiter Apr 23, 2019
7a353d5
insert_sort.c & merge_sort.c
aiter Apr 23, 2019
1b82dc1
stack & bfs/dfs & heap
aiter Apr 25, 2019
ed8f5f7
binary search tree & https://leetcode-cn.com/problems/minimum-distanc…
aiter Apr 26, 2019
8b8cf61
NOTE
aiter Apr 26, 2019
9ad8a82
format NOTE
aiter Apr 26, 2019
2f8ab3a
format NOTE
aiter Apr 26, 2019
0dc2a2e
format NOTE
aiter Apr 26, 2019
a34cc7e
format NOTE
aiter Apr 26, 2019
61ca47d
LeetCode_997_14.java & graph & https://leetcode-cn.com/problems/find-…
aiter Apr 29, 2019
14da6aa
Merge remote-tracking branch 'origin/master'
aiter Apr 29, 2019
6cdfc39
test from pad
aiter Apr 30, 2019
72bbeb5
heap & top K & https://leetcode-cn.com/problems/kth-largest-element-i…
aiter May 4, 2019
52eba87
heap & top K & https://leetcode-cn.com/problems/kth-largest-element-i…
aiter May 4, 2019
7b8598a
heap & top K & https://leetcode-cn.com/problems/kth-largest-element-i…
aiter May 4, 2019
bebe10f
maximum-depth-of-binary-tree & https://leetcode-cn.com/problems/maxim…
aiter May 4, 2019
0f61f0f
N叉树 & level-order-traversal & https://leetcode-cn.com/problems/n-ary-…
aiter May 4, 2019
3625663
format
aiter May 4, 2019
6d8b0e3
递归树、堆和排序、图、深度和广度优先搜索、字符串匹配
aiter May 5, 2019
daa95a0
trie tree & backtracking
aiter May 9, 2019
7b3d159
greedy & assign-cookies
aiter May 10, 2019
f0d2f93
dynamic programming & https://leetcode-cn.com/problems/min-cost-climb…
aiter May 10, 2019
9c697aa
study note
aiter May 11, 2019
9234d1b
g Note
aiter May 17, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
array valid-anagram
  • Loading branch information
liuyunjian-leya committed Apr 19, 2019
commit 74e8b0d62635dd1ce545016b27ba9409056df4f5
104 changes: 104 additions & 0 deletions Week_01/id_14/LeetCode_242_14.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
import java.util.Arrays;

/**
* https://leetcode-cn.com/problems/valid-anagram/
* <p> 数组 两个字符串是否是异位词
* <p> 简单
*/
public class LeetCode_242_14 {
public static void main(String[] args) {
Solution solution = new Solution();
Solution2 solution2 = new Solution2();

String s = "anagram";
String t = "nagaram";

System.out.println(solution.isAnagram(s, t));
System.out.println(solution2.isAnagram(s, t));
System.out.println(solution.isAnagram("rat", "car"));
System.out.println(solution.isAnagram("", ""));
System.out.println(solution2.isAnagram("rat", "car"));
System.out.println(solution2.isAnagram("", ""));
}

/**
* 假设字符串只包含小写字母,字母异位词。
* <pre>
* 1. 异位就是所有的字母个数都是一样的,只是位置不同
* 2. 只有小写字母。a-z (26)个字母。数组arr[26]
* 3. 看每个字母是否相等
* </pre>
*/
static class Solution2 {

public boolean isAnagram(String s, String t) {
if (s == null || t == null) {
return false;
}

if (s.length() != t.length()) {
return false;
}

if (s.equals(t)) {
return true;
}

int[] arr = new int[26];

for (int i : s.toCharArray()) {
arr[i - 'a']++;
}
for (int i : t.toCharArray()) {
arr[i - 'a']--;
}

for (int i = 0; i < arr.length; i++) {
if (arr[i] != 0) {
return false;
}
}

return true;
}
}

/**
* 这种解法,先排序,再比较。效率低。其实是可以不排序的,日常开发、设计也需要注意
* char数组排序直接用JDK实现的排序了。 <strong>这个可以尝试自己实现</strong>
* <pre>
* 1. 先对两个字符串内部char数组排序。O(n)。 O(2n)
* 2. 再遍历对比每个char O(n)
* 3. 总体时间复杂度。O(2n)+O(n)=O(3n)=O(n)
* </pre>
*/
static class Solution {

public boolean isAnagram(String s, String t) {
if (s == null || t == null) {
return false;
}

if (s.length() != t.length()) {
return false;
}

if (s.equals(t)) {
return true;
}

char[] ss = s.toCharArray();
Arrays.sort(ss);
char[] ts = t.toCharArray();
Arrays.sort(ts);

for (int i = 0; i < ss.length; i++) {
if (ss[i] != ts[i]) {
return false;
}
}

return true;
}
}
}