Skip to content

Commit 467c606

Browse files
authored
Merge pull request gzc426#315 from Mrkirito/master
1
2 parents c870c22 + 0d62124 commit 467c606

File tree

5 files changed

+135
-0
lines changed

5 files changed

+135
-0
lines changed

2018.11.29-leetcode443/kiritocly.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
private static int solution(char[] charArray) {
2+
if (charArray.length == 0) {
3+
return 0;
4+
}
5+
//遍历整个字符数组
6+
//压缩后的字符长度
7+
int resultCount = 0;
8+
//当前重复字符计数
9+
int count = 1;
10+
for (int i = 0; i < charArray.length; i++) {
11+
//如果遇到某个字符与当前字符不相等或者已经遍历到最后一个字符
12+
if (i + 1 == charArray.length || charArray[i] != charArray[i + 1]) {
13+
//记录一下当前字符,并且resultCount加1,比如a,a,b,b,b,扫面到第二个a时
14+
//a!=b,如果a的个数大于1,先将a后面所有的a替换为数字,如a,a替换为a,2
15+
charArray[resultCount++] = charArray[i];
16+
if (count > 1) {
17+
String temp = String.valueOf(count);
18+
for (int k = 0; k < temp.length(); k++) {
19+
charArray[resultCount++] = temp.charAt(k);
20+
}
21+
}
22+
//重新统计下一个字符
23+
count = 1;
24+
} else {
25+
//统计重复的字符个数
26+
count++;
27+
}
28+
29+
}
30+
return resultCount;
31+
}

2018.12.04-leetcode101/kiritocly.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
private static boolean solution(TreeNode root) {
2+
if (root == null) {
3+
return true;
4+
} else {
5+
//二叉树对称的条件
6+
//(1)左子树和右子树对称
7+
//(2)左子树的左子树和右子树的右子树对称
8+
//(3)左子树的右子树和右子树的左子树对称
9+
//递归判断
10+
return judge(root.leftNode, root.rightNode);
11+
}
12+
13+
}
14+
15+
private static boolean judge(TreeNode leftNode, TreeNode rightNode) {
16+
if (leftNode == null && rightNode == null) {
17+
return true;
18+
} else if (leftNode == null || rightNode == null) {
19+
return false;
20+
}
21+
//条件(1)
22+
if (leftNode.value != rightNode.value) {
23+
return false;
24+
}
25+
//条件(2)
26+
boolean flag1 = judge(leftNode.leftNode, rightNode.rightNode);
27+
//条件(3)
28+
boolean flag2 = judge(leftNode.rightNode, rightNode.leftNode);
29+
if (flag1 && flag2) {
30+
return true;
31+
}
32+
return false;
33+
}

2018.12.1-leetcode387/kiritocly.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
private static int solution(String input) {
2+
//只出现一次的字符的编号,以leetcode为例
3+
int index = 1;
4+
//26个英文字母,初始化一个长度为26的整形数组,第一个位置表示a的值,
5+
//第二个位置表示b的值,依此类推,数组中有三类值,-1,0,大于等于1的整数
6+
//-1表示字母出现两次或两次以上,0表示从未出现,大于等于1的整数表示只出现一次
7+
//的字母的序号
8+
int[] array = new int[26];
9+
for (int i = 0; i < input.length(); i++) {
10+
//将字符串中的字符转化为数组中的下标,例如a的asc码值为97,对应数组中的下标为0
11+
int charIndex = (int)input.charAt(i) - 97;
12+
if (array[charIndex] == 0) {
13+
//第一次出现,序号为index
14+
array[charIndex] = index;
15+
//index自增,记录下一个第一次出现的字符
16+
index++;
17+
} else {
18+
//字符已经出现过,即一个字符出现两次或者两次以上
19+
array[charIndex] = -1;
20+
}
21+
}
22+
char result = '#';
23+
//遍历array数组,找到最小的index,index>=1
24+
//记录最小的index
25+
int resultIndex = Integer.MAX_VALUE;
26+
for (int j = 0; j < array.length; j++) {
27+
if (array[j] > 0 && array[j] < resultIndex) {
28+
resultIndex = array[j];
29+
result = (char)(j + 97);
30+
}
31+
}
32+
if (result == '#') {
33+
return -1;
34+
}
35+
//找到result在字符串中第一次出现的位置
36+
for (int k = 0; k < input.length(); k++) {
37+
if (result == input.charAt(k)) {
38+
return k;
39+
}
40+
}
41+
return -1;
42+
}

2018.12.2-leetcode557/kiritocly.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
private static String solution(String input) {
2+
String[] splits = input.split(" ");
3+
StringBuffer sb = new StringBuffer();
4+
for (int i = 0; i < splits.length; i++) {
5+
//对每个字符串进行反转
6+
sb.append(reverse(splits[i]) + " ");
7+
}
8+
return sb.toString();
9+
}
10+
11+
private static String reverse(String str) {
12+
char[] charArray = str.toCharArray();
13+
int i = 0, j = charArray.length - 1;
14+
while (i < j) {
15+
char temp = charArray[i];
16+
charArray[i] = charArray[j];
17+
charArray[j] = temp;
18+
i++;
19+
j--;
20+
}
21+
return String.valueOf(charArray);
22+
}

2018.12.3-leetcode58/kiritocly.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
private static int solution(String input) {
2+
String[] splits = input.split(" ");
3+
if (splits.length == 0) {
4+
return 0;
5+
}
6+
return splits[splits.length - 1].length();
7+
}

0 commit comments

Comments
 (0)