Skip to content

Commit f2eddae

Browse files
committed
Added 4 solutions
1 parent 1636245 commit f2eddae

4 files changed

+100
-31
lines changed

Medium/Compare Version Numbers.java

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,41 @@
11
class Solution {
2-
public int compareVersion(String A, String B) {
3-
String[] arrA = A.split("\\.");
4-
String[] arrB = B.split("\\.");
5-
6-
int length = Math.max(arrA.length, arrB.length);
7-
for (int i=0;i<length;i++) {
8-
Long n1 = i<arrA.length ? Long.parseLong(arrA[i]) : 0;
9-
Long n2 = i<arrB.length ? Long.parseLong(arrB[i]) : 0;
10-
11-
int comp = n1.compareTo(n2);
12-
if (comp != 0) return comp;
2+
public static int compareVersion(String version1, String version2) {
3+
String[] v1 = version1.split("\\.");
4+
String[] v2 = version2.split("\\.");
5+
6+
int v1Start = 0;
7+
int v2Start = 0;
8+
9+
while (v1Start < v1.length || v2Start < v2.length) {
10+
11+
if (v1Start < v1.length && v2Start < v2.length) {
12+
if (Integer.parseInt(v1[v1Start]) < Integer.parseInt(v2[v2Start])) {
13+
return -1;
14+
} else if (Integer.parseInt(v1[v1Start]) > Integer.parseInt(v2[v2Start])) {
15+
return 1;
16+
}
17+
18+
v1Start++;
19+
v2Start++;
20+
}
21+
else if (v1Start < v1.length && v2Start == v2.length) {
22+
if (Integer.parseInt(v1[v1Start]) > 0) {
23+
return 1;
24+
}
25+
else {
26+
v1Start++;
27+
}
28+
}
29+
else {
30+
if (Integer.parseInt(v2[v2Start]) > 0) {
31+
return -1;
32+
}
33+
else {
34+
v2Start++;
35+
}
36+
}
1337
}
14-
38+
1539
return 0;
1640
}
1741
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
class Solution {
2+
public String findReplaceString(String S, int[] indexes, String[] sources, String[] targets) {
3+
Map<Integer, String> sourceMap = new HashMap<>();
4+
Map<Integer, String> targetMap = new HashMap<>();
5+
6+
for (int i=0; i<indexes.length; i++) {
7+
sourceMap.put(indexes[i], sources[i]);
8+
targetMap.put(indexes[i], targets[i]);
9+
}
10+
11+
StringBuilder sb = new StringBuilder();
12+
for (int i=0; i<S.length(); i++) {
13+
if (sourceMap.containsKey(i) && S.substring(i).startsWith(sourceMap.get(i))) {
14+
sb.append(targetMap.get(i));
15+
i += sourceMap.get(i).length() - 1;
16+
}
17+
else {
18+
sb.append(S.charAt(i));
19+
}
20+
}
21+
22+
return sb.toString();
23+
}
24+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class Solution {
2+
public static int maxSubArrayLen(int[] nums, int k) {
3+
Map<Integer, Integer> map = new HashMap<>();
4+
int sum = 0;
5+
int max = 0;
6+
7+
map.put(0, -1);
8+
9+
for (int i=0; i<nums.length; i++) {
10+
sum += nums[i];
11+
int diff = sum - k;
12+
if (map.containsKey(diff)) {
13+
max = Math.max(max, i - map.get(diff));
14+
}
15+
16+
if (!map.containsKey(sum)) {
17+
map.put(sum, i);
18+
}
19+
}
20+
21+
return max;
22+
}
23+
}
Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,27 @@
11
class Solution {
22
public static void reverseWords(char[] str) {
3-
int end = str.length-1;
3+
reverse(str, 0, str.length);
4+
45
int start = 0;
5-
char[] ans = new char[str.length];
6-
7-
while(end >= 0) {
8-
while (end >= 0 && str[end] != ' ') {
9-
end--;
6+
for (int i=0; i<str.length; i++) {
7+
if (str[i] == ' ') {
8+
reverse(str, start, i);
9+
start = i + 1;
1010
}
11+
}
1112

12-
int len = str.length - end - 1;
13-
int temp = end + 1;
14-
15-
while (start < len) {
16-
ans[start++] = str[temp++];
17-
}
13+
reverse(str, start, str.length);
14+
}
1815

19-
if (start < str.length) {
20-
ans[start++] = ' ';
21-
end--;
22-
}
16+
private static void reverse(char[] str, int start, int end) {
17+
for (int i=0; i<(end - start)/2; i++) {
18+
swap(str, start+i, end-i-1);
2319
}
20+
}
2421

25-
for(int i=0; i<ans.length; i++) {
26-
str[i] = ans[i];
27-
}
22+
private static void swap(char[] str, int i, int j) {
23+
char temp = str[i];
24+
str[i] = str[j];
25+
str[j] = temp;
2826
}
2927
}

0 commit comments

Comments
 (0)