Skip to content

Commit 7036fac

Browse files
authored
Merge branch 'master' into zero1997-patch-1
2 parents a0746df + 510a013 commit 7036fac

File tree

21 files changed

+731
-2
lines changed

21 files changed

+731
-2
lines changed

.idea/vcs.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
File renamed without changes.

2018.11.27-leetcode125/FFFro.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
class Solution {
2+
public boolean isPalindrome(String s) {
3+
s = s.toLowerCase();
4+
char[] charArray = s.toCharArray();
5+
String res = "";
6+
for (int i = 0; i < charArray.length; i++) {
7+
if ((int)charArray[i]>=48&&(int)charArray[i]<=57 || (int)charArray[i]>=97&&(int)charArray[i]<=122)
8+
res+=charArray[i];
9+
}
10+
char[] array = res.toCharArray();
11+
int start = 0;
12+
int end = array.length-1;
13+
while (end>start){
14+
15+
if(array[start] == array[end]){
16+
start++;
17+
end--;
18+
}else {
19+
return false;
20+
}
21+
}
22+
return true;
23+
24+
}
25+
}

2018.11.27-leetcode125/WhiteNight.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
java
2+
3+
/**
4+
* 验证回文串
5+
*
6+
*/
7+
public class A7 {
8+
public boolean isPalindrome(String s) {
9+
if (s.isEmpty())
10+
return true;
11+
12+
int begin = 0;
13+
int end = s.length() - 1;
14+
15+
char beginChar, endChar;
16+
17+
while (begin <= end){
18+
beginChar = s.charAt(begin);
19+
endChar = s.charAt(end);
20+
if (!Character.isLetterOrDigit(beginChar)){
21+
begin++;
22+
continue;
23+
}
24+
else if (!Character.isLetterOrDigit(endChar)){
25+
end--;
26+
continue;
27+
}
28+
else {
29+
if (Character.toLowerCase(beginChar) != Character.toLowerCase(endChar))
30+
return false;
31+
else{
32+
begin++;
33+
end--;
34+
}
35+
}
36+
}
37+
38+
return true;
39+
}
40+
41+
public static void main(String[] args) {
42+
A7 a = new A7();
43+
String s1 = "A man, a plan, a canal: Panama";
44+
String s2 = "race a car";
45+
boolean res1 = a.isPalindrome(s1);
46+
boolean res2 = a.isPalindrome(s2);
47+
System.out.println(res1);
48+
System.out.println(res2);
49+
}
50+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
char[] charArray = s.toCharArray();
2+
StringBuilder sb = new StringBuilder();
3+
for(char c:charArray){
4+
if(Character.isDigit(c)||Character.isLetter(c)){
5+
sb.append(c);
6+
}
7+
8+
}
9+
10+
return sb.toString().toLowerCase().equals(sb.reverse().toString().toLowerCase());
11+
12+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
```Java
2+
class Solution {
3+
public boolean isPalindrome(String s) {
4+
char[] charArray = s.toCharArray();
5+
int index=0;
6+
for(char c:charArray){
7+
if(c>=65&&c<=90 ){
8+
charArray[index++]=c;
9+
}else if(c>=97&&c<=122){
10+
charArray[index++]=(char)(c-32);
11+
}else if(c>=48&&c<=57) {
12+
charArray[index++]=c;
13+
}
14+
}
15+
System.out.print(charArray);
16+
int start=0;
17+
int end=index-1;
18+
while(start<=end){
19+
if(charArray[start]==charArray[end]){
20+
start++;
21+
end--;
22+
}else{
23+
return false;
24+
}
25+
26+
}
27+
return true;
28+
}
29+
}
30+
```
31+

2018.11.28-leetcode151/-.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
public class Solution {
2+
public String reverseWords(String s) {
3+
List<String> list = new ArrayList<>();
4+
StringBuffer buffer = new StringBuffer();
5+
for (int i = 0; i < s.length(); i++) {
6+
char c = s.charAt(i);
7+
if (c != ' ') {
8+
buffer.append(c);
9+
}else{
10+
if (buffer.length() != 0) {
11+
list.add(buffer.toString());
12+
buffer.setLength(0);
13+
}
14+
}
15+
}
16+
if (buffer.length() != 0) {
17+
list.add(buffer.toString());
18+
buffer.setLength(0);
19+
}
20+
for (int i = list.size(); i > 0; i--) {
21+
if (buffer.length() != 0) {
22+
buffer.append(" ");
23+
}
24+
buffer.append(list.get(i-1));
25+
}
26+
return buffer.toString();
27+
}
28+
}

2018.11.28-leetcode151/cuiHlu.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
//first reverse the string, second reverse the word
2+
void reverseWords(string &s) {
3+
if (s.empty())
4+
return;
5+
reverse(s.begin(), s.end());
6+
int length = s.size();
7+
int storeIndex = 0;
8+
for (int i = 0; i < length; ++i)
9+
{
10+
if (s[i] != ' ')
11+
{
12+
if (storeIndex != 0)
13+
{
14+
s[storeIndex++] = ' ';
15+
}
16+
int j = i;
17+
while (j < length && s[j] != ' ' )
18+
{
19+
s[storeIndex++] = s[j++];
20+
}
21+
reverse(s.begin() + storeIndex - j + i, s.begin() + storeIndex);
22+
i = j;
23+
}
24+
}
25+
s.erase(s.begin() + storeIndex, s.end());
26+
}

2018.11.28-leetcode151/str818.md

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# 翻转字符串里的单词
2+
3+
[英文练习](https://leetcode.com/problems/reverse-words-in-a-string/description/) | [中文练习](https://leetcode-cn.com/problems/reverse-words-in-a-string/description/)
4+
5+
**题目描述:** 给定一个字符串,逐个翻转字符串中的每个单词。
6+
7+
**示例:**
8+
```
9+
输入: "the sky is blue"
10+
输出: "blue is sky the"
11+
```
12+
**说明:**
13+
* 无空格字符构成一个单词。
14+
* 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
15+
* 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
16+
17+
**解法一:** 使用 Java API
18+
19+
```java
20+
public String reverseWords(String s) {
21+
// 正则式去掉空格
22+
String[] words = s.trim().split(" +");
23+
// 翻转
24+
Collections.reverse(Arrays.asList(words));
25+
// 单词间隔添加空格
26+
return String.join(" ", words);
27+
}
28+
```
29+
30+
**解法二:** 不使用 API ,纯裸写
31+
32+
```java
33+
public String reverseWords(String s) {
34+
if (s == null) return null;
35+
36+
char[] c = s.toCharArray();
37+
38+
// 第一步:反转整个字符串
39+
reverse(c, 0, c.length - 1);
40+
// 第二步:反转每个单词
41+
reverseWords(c);
42+
// 第三步:清空空格
43+
return cleanSpaces(c);
44+
45+
}
46+
47+
// 反转所有单词
48+
public void reverseWords(char[] c){
49+
int i = 0, j = 0;
50+
51+
while (i < c.length){
52+
while (i < j || i < c.length && c[i] == ' ') i++; // 跳过空格
53+
while (j < i || j < c.length && c[j] != ' ') j++; // 跳过非空格
54+
reverse(c, i, j - 1);
55+
}
56+
}
57+
58+
// 去掉头部、尾部与中间的多余空格
59+
public String cleanSpaces(char[] c){
60+
int i = 0, j = 0;
61+
62+
while (j < c.length){
63+
while (j < c.length && c[j] == ' ') j++; // 跳过空格
64+
while (j < c.length && c[j] != ' ') c[i++] = c[j++]; // 去掉所有空格
65+
while (j < c.length && c[j] == ' ') j++; // 跳过空格
66+
if (j < c.length) c[i++] = ' '; // 仅保留一个空格
67+
}
68+
69+
return new String(c).substring(0, i);
70+
}
71+
72+
// 从 i 到 j 反转数组 c
73+
public void reverse(char[] c, int i, int j){
74+
while(j > i){
75+
char t = c[i];
76+
c[i++] = c[j];
77+
c[j--] = t;
78+
}
79+
}
80+
```
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
2+
```java
3+
public class Solution {
4+
public String reverseWords(String s) {
5+
StringBuilder sb = new StringBuilder();
6+
String[] sArray=new StringBuilder(s).reverse().toString().split(" ");
7+
for(int i=0;i<sArray.length;i++) {
8+
if(!sArray[i].equals("")) {
9+
if (i != sArray.length - 1) {
10+
sb.append(new StringBuilder(sArray[i]).reverse()).append(" ");
11+
} else {
12+
sb.append(new StringBuilder(sArray[i]).reverse());
13+
}
14+
}
15+
16+
}
17+
return sb.toString();
18+
}
19+
20+
}
21+
```

0 commit comments

Comments
 (0)