Skip to content

Commit 3d9bb9b

Browse files
committed
fd
1 parent 7419e85 commit 3d9bb9b

File tree

2 files changed

+48
-64
lines changed

2 files changed

+48
-64
lines changed
Lines changed: 21 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,34 @@
11
public class ReverseWordsInAString {
22

3-
4-
// 耗时10ms
5-
public String reverseWords(String s) {
6-
StringBuilder sb = new StringBuilder();
7-
8-
boolean inWord = false;
9-
char[] cc = s.toCharArray();
10-
for (int i = cc.length - 1, idx = 0; i >= 0; i--) {
11-
if (cc[i] != ' ') {
12-
if (!inWord && sb.length() > 0) {
13-
sb.append(' ');
14-
}
15-
inWord = true;
16-
sb.insert(idx, cc[i]);
17-
} else if (inWord) {
18-
idx = sb.length() + 1;
19-
inWord = false;
20-
}
3+
public static String reverseWords(String s) {
4+
s = s.trim();
5+
if (s.length() == 0) {
6+
return "";
217
}
22-
23-
return sb.toString();
24-
}
25-
26-
// 耗时18ms
27-
public String reverseWords2(String s) {
288
StringBuilder sb = new StringBuilder();
29-
30-
for (int i = 0, j = 0; i < s.length(); ) {
9+
boolean flag = false;
10+
int i = s.length() - 1, j = i;
11+
for (i = s.length() - 1, j = i; i >= 0; i--) {
3112
if (s.charAt(i) == ' ') {
32-
i++;
33-
j = i;
34-
} else if (j >= s.length() || s.charAt(j) == ' ') {
35-
sb.insert(0, s.substring(i, j) + " ");
36-
i = j;
13+
if (!flag) {
14+
continue;
15+
} else {
16+
sb.append(s.substring(i + 1, j + 1)).append(" ");
17+
flag = false;
18+
}
3719
} else {
38-
j++;
20+
if (!flag) {
21+
j = i;
22+
flag = true;
23+
}
3924
}
4025
}
41-
42-
if (sb.length() > 0) {
26+
if (j > i) {
27+
sb.append(s.substring(i + 1, j + 1));
28+
}
29+
if (sb.charAt(sb.length() - 1) == ' ') {
4330
sb.setLength(sb.length() - 1);
4431
}
45-
4632
return sb.toString();
4733
}
4834
}

leetcode/src/Main.java

Lines changed: 27 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,38 @@
22

33
public class Main {
44

5-
public static int myAtoi(String str) {
6-
int i = 0, sign = 1;
7-
for ( ; i < str.length() && str.charAt(i) == ' '; i++);
8-
if (i < str.length()) {
9-
char csign = str.charAt(i);
10-
if (csign == '-') {
11-
sign = -1;
12-
i++;
13-
} else if (csign == '+') {
14-
sign = 1;
15-
i++;
16-
} else if (csign < '0' || csign > '9') {
17-
return 0;
18-
} else {}
19-
}
20-
long number = 0;
21-
for ( ; i < str.length(); i++) {
22-
char c = str.charAt(i);
23-
if (c < '0' || c > '9') {
24-
break;
25-
}
26-
number = number * 10 + (c - '0');
5+
public static String reverseWords(String s) {
6+
int i, j = 0;
7+
boolean flag = false;
278

28-
if (number * sign > Integer.MAX_VALUE) {
29-
return Integer.MAX_VALUE;
30-
}
31-
if (number * sign < Integer.MIN_VALUE) {
32-
return Integer.MIN_VALUE;
9+
StringBuilder sb = new StringBuilder();
10+
11+
for (i = s.length() - 1; i >= 0; i--) {
12+
if (s.charAt(i) == ' ') {
13+
if (!flag) {
14+
continue;
15+
} else {
16+
flag = false;
17+
sb.append(s.substring(i + 1, j + 1)).append(" ");
18+
}
19+
} else {
20+
if (!flag) {
21+
flag = true;
22+
j = i;
23+
}
3324
}
3425
}
35-
return (int) (number * sign);
26+
27+
if (flag) {
28+
sb.append(s.substring(i + 1, j + 1));
29+
}
30+
if (sb.length() > 0 && sb.charAt(sb.length() - 1) == ' ') {
31+
sb.setLength(sb.length() - 1);
32+
}
33+
return sb.toString();
3634
}
3735

3836
public static void main(String[] args) {
39-
System.out.println(myAtoi("-42"));
37+
System.out.println(reverseWords("the sky is blue"));
4038
}
4139
}

0 commit comments

Comments
 (0)