Count And Say

Problem

Implement Count And Say function. For example, first, let user input a number, say 1. Then, the function will generate the next 10 numbers which satisfy this condition: ,1, 11,21,1211,111221,312211...
explanation: first number 1, second number is one 1, so 11. Third number is two 1(previous number), so 21. next number one 2 one 1, so 1211 and so on...

Solution

public String countAndSay(int n) {
    if (n <= 0)
        return "";

    String curRes = "1";
    int start = 1;

    while (start < n) {
        StringBuffer sb = new StringBuffer();
        int cnt = 1;
        for (int i = 1; i < curRes.length(); i++) {
            if (curRes.charAt(i) == curRes.charAt(i - 1)) {
                cnt++;
            }
            else {
                sb.append(cnt);
                sb.append(curRes.charAt(i - 1));
                cnt = 1;
            }
        }
        sb.append(cnt);
        sb.append(curRes.charAt(curRes.length() - 1));
        curRes = sb.toString();
        start++;
    }

    return curRes;
}

 

posted on 2014-11-21 09:58  SuperBo  阅读(172)  评论(0编辑  收藏  举报