Count and Say (Array Length Encoding) -- LeetCode

4041 단어
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.
사고방식: 과정을 모의하면 된다.여기서 배운 게 stl에 int 회전string이라는 함수가 있어요. to_.string().예전에는 줄곧stringstream으로 돌았는데...
 1 class Solution {  2 public:  3     string countAndSay(int n) {  4         if (n < 1) return "";  5         string res = "1";  6         for (int i = 2; i <= n; i++)  7  {  8             string tem;  9             char cur = res[0]; 10             int count = 1; 11             for (int j = 1, n = res.size(); j < n; j++) 12  { 13                 if (cur == res[j]) count++; 14                 else
15  { 16                     tem.append(to_string(count) + cur); 17                     cur = res[j]; 18                     count = 1; 19  } 20  } 21             tem.append(to_string(count) + cur); 22             res = tem; 23  } 24         return res; 25  } 26 };

 
Amazon 면접 문제에array length encoding이 하나 있는데 이 문제와 차이가 많지 않습니다. 단지 int수 그룹을 주었을 뿐입니다. 돌아오는 결과도 int수 그룹이고 인코딩을 한 번만 하면 됩니다.
 1 class Solution  2 {  3 public:  4     vector<int> ArrayLengthEncoding(vector<int>& bits)  5  {  6         vector<int> res;  7         if (!bits.size()) return res;  8         int cur = bits[0], count = 1;  9         for (int i = 1, n = bits.size(); i < n; i++) 10  { 11             if (bits[i] == cur) count++; 12             else
13  { 14  res.push_back(cur); 15  res.push_back(count); 16                 cur = bits[i]; 17                 count = 1; 18  } 19  } 20         //we need to add the last part of bits
21  res.push_back(cur); 22  res.push_back(count); 23         return res; 24  } 25 };

 

좋은 웹페이지 즐겨찾기