-
Notifications
You must be signed in to change notification settings - Fork 43
/
CountAndSay.java
97 lines (89 loc) · 2.43 KB
/
CountAndSay.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package LeetCodeJava.String;
// https://leetcode.com/problems/count-and-say/description/
public class CountAndSay {
// V0
// public String countAndSay(int n) {
//
// if (n==1){
// return "1";
// }
//
// String res = "1";
// for (int i = 1; i < n-1; i++){
// String curRes = help(i, res);
// res += curRes;
// }
// return res;
// }
//
// private String help(int n, String cur){
//
// int cnt = 1;
//
// if (n<=0){
// return null;
// }
//
// if (n==1){
// return "1";
// }
// for (int i = 0; i < cur.length()-1; i++){
// System.out.println("i = " + i + " cur = " + cur);
// String _cur = String.valueOf(cur.charAt(i));
// String _next = String.valueOf(cur.charAt(i+1));
// if (_cur.equals(_next)){
// cnt += 1;
// }else{
// _cur += (String.valueOf(cnt));
// cur += (_cur);
// cnt = 1;
// }
// }
// return cur;
// }
// V1
// IDEA : ITERATION
// https://leetcode.com/problems/count-and-say/solutions/3409791/easy-code-java-solution/
public String countAndSay_1(int n) {
if(n == 1){
return "1";
}
String st = "11";
int j = 0;
for(int i = 0;i<n-2;i++){
int count = 1;
String s = "";
for( j = 0;j<st.length()-1;j++){
if(st.charAt(j) == st.charAt(j+1)){
count++;
}
else{
s += Integer.toString(count);
s += st.charAt(j);
count = 1;
}
}
s += Integer.toString(count);
s += st.charAt(j);
st = s;
}
return st;
}
// V2
// IDEA : RECURSION
// https://leetcode.com/problems/count-and-say/solutions/3412863/java-recursion-good-to-go/
int counter;
public String countAndSay_2(int n) {
if(n==1) return "1" ;
String s= countAndSay_2(n-1);
StringBuilder sb = new StringBuilder();
for(int i=0;i<s.length();i++){
counter ++;
if(i==s.length()-1 ||s.charAt(i)!=s.charAt(i+1)){
sb.append(counter).append(s.charAt(i));
counter=0;
}
}
return sb.toString();
}
}