Skip to content

Commit 1cac07b

Browse files
authored
Create Icy.md
1 parent d5a3a16 commit 1cac07b

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed

2018.11.29-leetcode443/Icy.md

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
class Solution{
2+
/*
3+
1.count=0;
4+
2.循环内,如果不是最后一个元素,获取两个值,count++;如果是最后一个元素,跳转到第5步
5+
3.如果前一个值和下一个值相等,删除下一个值,数量加1,指针返回到前面,跳转到第2步
6+
如果不相等,看count数值,
7+
4.数值大于1,指针到后面,添加新元素,count=0;跳转到第2步
8+
如果不大于1,count=0;跳转到第2步,
9+
5.循环外,count大于1就添加新元素
10+
6.返回新数组长度
11+
*/
12+
public static int compress(Vector<Character> chars){
13+
int count=0;
14+
char c1;
15+
char c2;
16+
for (int i = 0; i < chars.size()-1; i++) {
17+
c1=chars.get(i);
18+
count++;
19+
c2=chars.get(i+1);
20+
if(c1==c2){
21+
chars.remove(i);
22+
i--;
23+
}else{//不相等
24+
if(count>1){//添加新元素,如:'1','5'等
25+
if(count<10){
26+
}else if(count>=10&&count<100){
27+
chars.add(i+1,(char) (count/10%10+48));
28+
}else if(count>=100&&count<1000){
29+
chars.add(i+1,(char) (count/100+48));
30+
chars.add(i+1,(char) (count/10%10+48));
31+
}else if(count>=1000&&count<10000){
32+
chars.add(++i,(char) (count/1000+48));
33+
System.out.println(chars.get(i+1));
34+
chars.add(++i,(char) (count/100%10+48));
35+
chars.add(++i,(char) (count/10%10+48));
36+
}
37+
chars.add(i+1,(char) (count%10+48));
38+
}
39+
count=0;
40+
}
41+
}
42+
count++;
43+
if(count>1){
44+
if(count<10){
45+
}else if(count>=10&&count<100){
46+
chars.add((char) (count/10%10+48));
47+
}else if(count>=100&&count<1000){
48+
chars.add((char) (count/100+48));
49+
chars.add((char) (count/10%10+48));
50+
}else if(count>=1000&&count<10000){
51+
chars.add((char) (count/1000+48));
52+
chars.add((char) (count/100%10+48));
53+
chars.add((char) (count/10%10+48));
54+
}
55+
chars.add((char) (count%10+48));
56+
count=0;
57+
}
58+
System.out.println(chars);
59+
return chars.size();
60+
}
61+
62+
//测试运行
63+
public static void main(String[] args) {
64+
char[] c = new char[1200];
65+
c[0]='a';
66+
c[1]='c';
67+
c[2]='c';
68+
for (int i = 3; i < 1198; i++) {
69+
c[i]='g';
70+
}
71+
c[1198]='c';
72+
c[1199]='c';
73+
Vector<Character> chars= new Vector<>();
74+
for (int i = 0; i < c.length; i++) {
75+
chars.add(c[i]);
76+
}
77+
int n= compress(chars);
78+
System.out.println("新数组长度:"+n);
79+
}
80+
}

0 commit comments

Comments
 (0)