程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> Count and Say

Count and Say

編輯:關於C++

一、 題目

題目說,如下的字符串:

1, 11, 21, 1211, 111221, ...

1讀成11(一個1)

11讀成21(兩個1)

21讀成(一個2一個1)

......

給一個整數,返回對應得語句。返回語句為一個字符串

二、 分析

題目的意思不是很明白,其實就是說第i+1個字符串是第i個字符串的讀法,第一字符串為 “1”

比如第四個字符串是1211,它的讀法是 1個1、1個2,2個1,因此第五個字符串是111221。第五個字符串的讀法是:3個1、2個2、1個1,因此第六個字符串是312211。

明白了題意,我們不難想到思路:

1、初始字符串為”1”,字符ch為 str[0],中間字符串為str2;

2、從1開始循環產生字符串直到n;

3、遍歷字符串,計數相連的相同字符,並產生新的字符串;

class Solution {
public:
    string countAndSay(int n) {
        if(n == 0)
        	return "";
        string str = "1";
        for(int i = 1; i < n; i++){
        	char ch = str[0];
        	string str2 = "";
        	int count = 1;
        	for(int j=1;j 0){
        			str2 = str2 + char(count + '0') + ch;
        			count = 1;
        			ch = str[j];
				}
			}
        	str2 = str2 + char(count + '0') + ch;
        	str = str2;
        }
        return str;
    }
};

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved