leetcode 外觀數列 python3

2021-10-07 13:05:39 字數 2726 閱讀 1364

方案一:

遞迴方法

class

solution

:def

countandsay

(self, n:

int)

->

str:

if n==1:

return

"1"elif n==2:

return

"11"

elif n==3:

return

"21"

elif n==4:

return

"1211"

elif n==5:

return

"111221"

else

: strs = self.countandsay(n-1)

lis =

list

(strs)

sts =

start =

len(lis)-1

q = lis[start]

for i in

range

(len

(lis))[

::-1

]:

temp =

q = lis[start]

if lis[i]

!=q:

temp = lis[i+1:

]del lis[i+1:

]

start = i

lens =

0 int

(q))

)int

(lis[0]

))0]

))

sts_reverse =

list

(reversed

(sts)

)return

"".join(

str(i)

for i in sts_reverse)

方案二:

模擬a=

['1']n=

4for i in

range

(n-1):

b=1''

) aa=

print

(a)for j in

range

(len

(a)-1)

:if a[j]

== a[j+1]

: b+=

1else

:str

(b))

str(a[j]))

b=1 a=aa

print(''

.join(a)

)

知識點一:

reversed 函式返回乙個反轉的迭代器。

語法以下是 reversed 的語法:

reversed

(seq)

引數seq -

- 要轉換的序列,可以是 tuple

, string,

list 或 range。

返回值返回乙個反轉的迭代器。

知識點二:

stringbuilder sb = new stringbuilder(); 

stringbuilder是乙個類,可以用來處理字串,最簡單的用法:

stringbuilder sb=new stringbuilder();

"123");

"456");

string str

=sb.tostring();

最後得到的str字串的值就是"123456",這種用法要比直接字串相加效率高,比如:

string s1=「123」;

string s2=「456」;

string str

=s1+s2;

得到的結果相同,但在處理大規模的字串的時候第二種方法效率會變低。

知識點三:

string.join(

)python中有join(

)和os.path.join(

)兩個函式,具體作用如下:

join(

): 連線字串陣列。將字串、元組、列表中的元素以指定的字元(分隔符)連線生成乙個新的字串

os.path.join(

): 將多個路徑組合後返回

一、函式說明

1、join(

)函式語法: 'sep'

.join(seq)

引數說明

sep:分隔符。可以為空

seq:要連線的元素序列、字串、元組、字典

上面的語法即:以sep作為分隔符,將seq所有的元素合併成乙個新的字串

返回值:返回乙個以分隔符sep連線各個元素後生成的字串

1#對序列進行操作(分別使用' '與':'作為分隔符)23

>>

> seq1 =

['hello'

,'good'

,'boy'

,'doiido']4

>>

>

print

' '.join(seq1)

5 hello good boy doiido

6>>

>

print

':'.join(seq1)

7 hello:good:boy:doiido

leetcode 外觀數列 c

外觀數列 給定乙個正整數 n 1 n 30 輸出外觀數列的第 n 項。注意 整數序列中的每一項將表示為乙個字串。外觀數列 是乙個整數序列,從數字 1 開始,序列中的每一項都是對前一項的描述。前五項如下 1 11 21 1211 111221 第一項是數字 1 描述前一項,這個數是 1 即 乙個 1 ...

leetcode38 外觀數列

外觀數列 是乙個整數序列,從數字 1 開始,序列中的每一項都是對前一項的描述。前五項如下 1.1 2.11 3.21 4.1211 5.111221 1 被讀作 one 1 乙個一 即 11。11 被讀作 two 1s 兩個一 即 21。21 被讀作 one 2 one 1 乙個二 乙個一 即 12...

LeetCode0038 外觀數列

外觀數列 是乙個整數序列,從數字 1 開始,序列中的每一項都是對前一項的描述。前五項如下 1 1121 1211 111221 1 被讀作 one 1 乙個一 即 11。11 被讀作 two 1s 兩個一 即 21。21 被讀作 one 2 one 1 乙個二 乙個一 即 1211。給定乙個正整數 ...