Skip to content

Commit d45b2fa

Browse files
author
unknown
committed
ci
1 parent 8d81587 commit d45b2fa

File tree

6 files changed

+217
-0
lines changed

6 files changed

+217
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package hard;
2+
3+
/**
4+
* @author 潘磊明
5+
* @date 2019/12/10
6+
*/
7+
public class DistinctSubsequences {
8+
public int numDistinct(String s, String t) {
9+
char[] sarray = s.toCharArray();
10+
char[] tarray = t.toCharArray();
11+
int[][] dp = new int[tarray.length + 1][sarray.length + 1];
12+
for (int i = 0; i < sarray.length + 1; i++) dp[0][i] = 1; //空字符串是所有字符串的子序列
13+
for (int i = 1; i < tarray.length + 1; i++) {
14+
for (int j = 1; j < sarray.length + 1; j++) {
15+
if (tarray[i - 1] == sarray[j - 1]) dp[i][j] = dp[i - 1][j - 1] + dp[i][j - 1];
16+
else dp[i][j] = dp[i][j - 1];
17+
}
18+
}
19+
return dp[tarray.length][sarray.length];
20+
}
21+
}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package easy;
2+
3+
import javax.naming.Name;
4+
import java.awt.dnd.DnDConstants;
5+
import java.util.Deque;
6+
import java.util.HashMap;
7+
import java.util.Map;
8+
9+
/**
10+
* @author 潘磊明
11+
* @date 2019/12/11
12+
*/
13+
public class FirstUniqueCharacterInAString {
14+
// public int firstUniqChar(String s) {
15+
// char[] array = s.toCharArray();
16+
// char c = '@';
17+
// Map<Character, Integer> map = new HashMap<>();
18+
// for (int i = 0; i < array.length; i++) {
19+
// if (map.containsKey(array[i])) {
20+
// array[map.get(array[i])] = c;
21+
// array[i] = c;
22+
// } else {
23+
// map.put(array[i], i);
24+
// }
25+
// }
26+
// for (int i = 0; i < array.length; i++) {
27+
// if (array[i] != c) return i;
28+
// }
29+
// return -1;
30+
// }
31+
32+
DNode head = new DNode();
33+
DNode tail = new DNode();
34+
35+
public int firstUniqChar(String s) {
36+
char[] array = s.toCharArray();
37+
head.next = tail;
38+
tail.prev = head;
39+
Map<Character, DNode> map = new HashMap<>();
40+
for (int i = 0; i < array.length; i++) {
41+
if (map.containsKey(array[i])) {
42+
DNode node = map.get(array[i]);
43+
node.count += 1;
44+
moveNodeToEnd(node);
45+
} else {
46+
DNode node = new DNode();
47+
node.i = i;
48+
node.count = 1;
49+
addNode(node);
50+
map.put(array[i], node);
51+
}
52+
}
53+
DNode d = head.next;
54+
if (d.count == 1) return d.i;
55+
else return -1;
56+
}
57+
58+
private void addNode(DNode node){
59+
DNode tmp = tail.prev;
60+
tmp.next = node;
61+
node.next = tail;
62+
tail.prev = node;
63+
node.prev = tmp;
64+
}
65+
66+
private void moveNodeToEnd(DNode node){
67+
if (node.prev == null) return;
68+
node.prev.next = node.next;
69+
node.next.prev = node.prev;
70+
node.next = null;
71+
node.prev = null;
72+
}
73+
74+
class DNode {
75+
private int i;
76+
private int count;
77+
DNode prev;
78+
DNode next;
79+
}
80+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package easy;
2+
3+
import java.util.Deque;
4+
5+
/**
6+
* @author 潘磊明
7+
* @date 2019/12/11
8+
*/
9+
public class LengthOfLastWord {
10+
// public int lengthOfLastWord(String s) {
11+
// int length = 0;
12+
// int tmp = 0;
13+
// char[] chars = s.toCharArray();
14+
// for (int i = 0; i < chars.length; i++) {
15+
// if (chars[i] == ' ') {
16+
// if (tmp != 0) length = tmp;
17+
// tmp = 0;
18+
// }
19+
// else tmp += 1;
20+
// }
21+
// return tmp == 0 ? length : tmp;
22+
// }
23+
24+
public int lengthOfLastWord(String s) {
25+
String[] tmp = s.trim().split(" ");
26+
return tmp[tmp.length - 1].length();
27+
}
28+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package easy;
2+
3+
/**
4+
* @author 潘磊明
5+
* @date 2019/12/11
6+
*/
7+
public class ToLowerCase {
8+
public String toLowerCase(String str) {
9+
char[] chars = str.toCharArray();
10+
for (int i = 0; i < chars.length; i++) {
11+
if (chars[i] <= 'Z' && chars[i] >= 'A') {
12+
chars[i] += 32;
13+
}
14+
}
15+
return new String(chars);
16+
}
17+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package easy;
2+
3+
import java.util.HashSet;
4+
5+
/**
6+
* @author 潘磊明
7+
* @date 2019/12/11
8+
*/
9+
public class JewelsAndStones {
10+
public int numJewelsInStones(String J, String S) {
11+
HashSet<Character> set = new HashSet<>();
12+
char[] jchars = J.toCharArray();
13+
for (char c : jchars) set.add(c);
14+
int length = 0;
15+
char[] chars = S.toCharArray();
16+
for (char c : chars) {
17+
if (set.contains(c)) length++;
18+
}
19+
return length;
20+
}
21+
}

Week 08/id_431/LeetCode_8_431.java

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package medium;
2+
3+
import java.util.Deque;
4+
import java.util.LinkedList;
5+
import java.util.Map;
6+
7+
/**
8+
* @author 潘磊明
9+
* @date 2019/12/11
10+
*/
11+
public class StringToIntegerAtoi {
12+
public int myAtoi(String str) {
13+
String s = str.trim();
14+
char[] chars = s.toCharArray();
15+
if (chars.length == 0) return 0;
16+
Deque<Character> deque = new LinkedList<>();
17+
//判断首字母
18+
if (!isEffective(chars[0])) return 0;
19+
deque.addLast(chars[0]);
20+
for (int i = 1; i < chars.length; i++) {
21+
if (chars[i] >= '0' && chars[i] <= '9') deque.addLast(chars[i]);
22+
else {
23+
break;
24+
}
25+
}
26+
long num = 0L;
27+
boolean flag = true; //是正还是负
28+
//初始化
29+
char first = deque.removeFirst();
30+
if (first == '-') flag = false;
31+
else if (first >= '0' && first <= '9') num += (first - '0') * Math.pow(10, deque.size());
32+
while (!deque.isEmpty()) {
33+
first = deque.removeFirst();
34+
if (flag) {
35+
num += (first - '0') * Math.pow(10, deque.size());
36+
if (num > Integer.MAX_VALUE) return Integer.MAX_VALUE;
37+
}
38+
else {
39+
num -= (first - '0') * Math.pow(10, deque.size());
40+
if (num < Integer.MIN_VALUE) return Integer.MIN_VALUE;
41+
}
42+
}
43+
return (int)num;
44+
}
45+
46+
private boolean isEffective(char c) {
47+
if (c == '+' || c == '-' || (c >= '0' && c <= '9')) return true;
48+
return false;
49+
}
50+
}

0 commit comments

Comments
 (0)