Title: Count and Say Source: leetcode.com
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.
Java solution
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 |
/* https://leetcode.com/problems/count-and-say/ */ public class CountAndSay { public String countAndSay(int n) { String num = 1+""; for(int i=1;i<n;i++) { num = helper(num); } return num; } public String helper(String num) { String s=""; int count = 1; char prevChar = num.charAt(0); for(int i=1;i<num.length();i++) { if(num.charAt(i)==prevChar) { ++count; } else { s += count+""+prevChar; prevChar = num.charAt(i); count = 1; } } s+=count+""+prevChar; return s; } public static void main(String args[]) { CountAndSay cs = new CountAndSay(); System.out.println(cs.countAndSay(1)); } } |