forked from terrytong0876/LintCode-1
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCount and Say.java
More file actions
executable file
·69 lines (54 loc) · 1.64 KB
/
Copy pathCount and Say.java
File metadata and controls
executable file
·69 lines (54 loc) · 1.64 KB
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
E
Basic implementation. Count duplicates and print
```
/*
The count-and-say sequence is the sequence of integers beginning as follows:
1, 11, 21, 1211, 111221, ...
1 is read off as "one 1" or 11.
11 is read off as "two 1s" or 21.
21 is read off as "one 2, then one 1" or 1211.
Given an integer n, generate the nth sequence.
Example
Given n = 5, return "111221".
Note
The sequence of integers will be represented as a string.
Tags Expand
String
1. Set up initial value '11'
2. use while loop to build on past variable
3. In each while loop case, break the string into charArray, count and name mark the type
4. In for loop: when different, append string (count+type); when same, count++.
*/
public class Solution {
/**
* @param n the nth
* @return the nth sequence
*/
public String countAndSay(int n) {
if (n <= 1) {
return n + "";
}
String str = "11";
int ind = 2;
while (ind < n) {
StringBuffer sb = new StringBuffer();
char[] arr = str.toCharArray();
int count = 1;
int type = Character.getNumericValue(arr[0]);
for (int i = 1; i < arr.length; i++) {
if (arr[i] == arr[i - 1]) {
count++;
} else {
sb.append(count + "" + type);
type = Character.getNumericValue(arr[i]);
count = 1;
}
}
ind++;
sb.append(count + "" + type);
str = sb.toString();
}
return str;
}
}
```