wayetan
1/1/2014 - 3:02 AM

Count and Say

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) {
        StringBuilder sb = new StringBuilder("1");
        while(n-- > 1){
            StringBuilder temp = new StringBuilder();
            int count = 1;
            for(int i = 1; i < sb.length(); i++){
                if(sb.charAt(i) == sb.charAt(i - 1))
                    count++;
                else{
                    // appending..
                    temp.append(count);
                    temp.append(sb.charAt(i - 1));
                    count = 1;
                }
            }
            temp.append(count);
            temp.append(sb.charAt(sb.length() - 1));
            sb = temp;
        }
        return sb.toString();
    }
}