t******e 发帖数: 1293 | 1 测试了前面8个都没有问题, O(n)时间和空间,可以改为O(1)空间
#include
#include
#include |
s******t 发帖数: 2374 | 2 你这个会不会溢出呢。比如一个数字是 ’12‘
是不是都当做1 和 2处理 了呢。
所以我觉得还是不用 % 和 / |
t******e 发帖数: 1293 | 3 我这个不会有溢出,都声明了是unsigned int
不是看作字符串的
【在 s******t 的大作中提到】 : 你这个会不会溢出呢。比如一个数字是 ’12‘ : 是不是都当做1 和 2处理 了呢。 : 所以我觉得还是不用 % 和 /
|
C****u 发帖数: 18 | 4 1 def count(s,i):
2 o = i
3 c = s[i]
4 while (i < len(s) and c == s[i]):
5 i += 1
6 return (c,i - o)
7
8 def foo(s):
9 res = ''
10 pos = 0
11 while(pos < len(s)):
12 (ch,cnt) = count(s, pos)
13 res += str(cnt)
14 res += ch
15 pos += cnt
16 return res
17
18 s = '1'
19 print s
20 for i in range(10):
21 s = foo(s)
22 print s
运行结果:
python seq.py
1
11
21
1211
111221
312211
13112221
1113213211
31131211131221
13211311123113112211
111312211331121
【在 t******e 的大作中提到】 : 测试了前面8个都没有问题, O(n)时间和空间,可以改为O(1)空间 : #include : #include : #include
|
b******v 发帖数: 1493 | |
s******t 发帖数: 2374 | 6 我的意思是
int a = 10;
a%10
如果你之前的顺序是
11111111111111111111111 (假设是21个1,我没数)
then next will be (21)1
你这个解法就会有问题。
【在 t******e 的大作中提到】 : 我这个不会有溢出,都声明了是unsigned int : 不是看作字符串的
|
t******e 发帖数: 1293 | 7 喔,明白了,那只能用字符串来处理或者用链表了
【在 s******t 的大作中提到】 : 我的意思是 : int a = 10; : a%10 : 如果你之前的顺序是 : 11111111111111111111111 (假设是21个1,我没数) : then next will be (21)1 : 你这个解法就会有问题。
|
b******n 发帖数: 823 | 8 写了个用string的
#include
#include
int main(int argc, char* argv[])
{
using namespace std;
cout << 1 << endl;
string s1, s2;
s1.push_back('1');
s1.push_back('1');
int loopcount = 0;
while(loopcount++ < 10)
{
cout << s1 << endl;
s1.push_back('a');
int i;
for (i=0; i
{
int dupsize = 1;
while(s1[i] == s1[i+1])
{
dupsize++;
i++ |