力扣外观数列python
时间: 2023-06-13 16:07:08 浏览: 139
这道题的思路是模拟,遍历字符串中的每一个字符,记录当前字符出现的次数,如果下一个字符与当前字符不同,则将当前字符的出现次数和当前字符加入结果字符串中,最后返回结果字符串即可。
以下是Python的代码实现:
```python
class Solution:
def countAndSay(self, n: int) -> str:
if n == 1:
return "1"
prev = self.countAndSay(n-1)
res = ""
i = 0
while i < len(prev):
count = 1
while i < len(prev)-1 and prev[i] == prev[i+1]:
count += 1
i += 1
res += str(count) + prev[i]
i += 1
return res
```
其中,`prev`是上一个数列的结果,`res`是当前数列的结果。变量`i`记录当前遍历到的字符的下标,`count`记录当前字符出现的次数。外层的`while`循环遍历整个字符串,内层的`while`循环计算当前字符出现的次数。最后将当前字符的出现次数和当前字符加入结果字符串中,继续遍历下一个字符。
相关问题
力扣反转链表python
以下是反转链表的 Python 代码示例:
```python
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
def reverseList(head):
"""
:type head: ListNode
:rtype: ListNode
"""
prev = None
curr = head
while curr:
next_node = curr.next
curr.next = prev
prev = curr
curr = next_node
return prev
```
首先定义链表的节点类 `ListNode`,其中 `val` 表示节点的值,`next` 表示下一个节点。
然后定义了 `reverseList` 函数,接受链表的头节点作为参数。函数中使用三个指针 `prev`、`curr`、`next_node` 分别表示上一个节点、当前节点和下一个节点。在每次循环中,将当前节点的 `next` 指向上一个节点,然后移动三个指针,直到当前节点为空。最后返回新的头节点 `prev`。
力扣爬楼梯python
力扣爬楼梯的问题可以使用斐波那契数列来解决。每次可以选择爬1个台阶或2个台阶,所以到达第n阶的方法数量等于到达第n-1阶和第n-2阶的方法数量之和。我们可以使用动态规划的方法来求解,创建一个长度为n+1的数组p,初始化p=1和p=1。然后使用循环遍历p数组,计算p[i] = p[i-1] + p[i-2]。最后返回p[n]即为到达楼顶的方法数量。
示例代码如下:
```
class Solution:
def climbStairs(self, n: int) -> int:
p = [0] * (n + 1)
p[0] = 1
p[1] = 1
for i in range(2, n + 1):
p[i] = p[i-1] + p[i-2]
return p[n]
```
阅读全文