Count and Say
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.
Note: The sequence of integers will be represented as a string.
public class Solution { public String countAndSay(int n) { // Start typing your Java solution below // DO NOT write main() function if (n == 0) return ""; String str = "1"; HashMapmap = new HashMap (); for (int i = 1; i < n; ++i) { int start = 0; StringBuffer newstr = new StringBuffer(); for (int j = 0; j < str.length(); ++j) { if (j != str.length() - 1 && str.charAt(j) == str.charAt(j+1)) { continue; } String stored = map.get(str.substring(start, j+1)); if (stored == null) { String strappend = String.valueOf(j - start + 1) + str.substring(start, start + 1); map.put(str.substring(start, j+1), strappend); newstr.append(strappend); } else { newstr.append(stored); } start = j + 1; } str = newstr.toString(); } return str; } }
No comments:
Post a Comment