驼峰字符串处理
定义驼峰字符串:oto,两个相同字符中间存在一个其他字符
输入一段字符,消除其中的驼峰字符串,并返回其最长非驼峰字符
比如:输入asdsa 输出:asda
解题思路:
- 使用
栈
数据结构,每次元素依次入栈,如果栈中的元素超过2,则判断与当前元素是否有驼峰,有驼峰则删除当前元素,
def tuofeng(str):
if len(str) <=2:
return []
res =[]
for i in range(0,len(str)+1):
if len(res)>2:
if res[-1] == res[-3]:
# del res[-3:]
del res[-1]
# print(res)
if i<len(str):
res.append(str[i])
return res
2. 删除整个驼峰字符串
比如 输入a
bcb
n 输出 an
python数据类型
可变和不可变:指内存中的内容value
-
可变类型:
list
、set
、dic
地址 XXX01 永远指向 1,XXX02 永远指向 2
-
不可变类型:
tuple
、number
、string
如图中地址 XXX03 XXX04 指向 [1,2,3],也可指向 [1,2,3,4] 或其他不同的值
-
可变类型与不可变类型的区别
- 不可变类型,对象本身操作时,必须在内存中新申请一块区域
- 可变类型:对对象操作时,不需要再其他地方申请内存,只需要在此对象后面连续申请即可,即它的地址保持不变
- 可以使用id()确认对象
- 不可变类型的好处?当我们把数据传给一个不了解的API时,可以保证我们的数据不会被修改
- 不可变类型深拷贝和浅拷贝的区别
浅拷贝
浅拷贝新创建了一个和原对象一样的类型,其内容是对原对象的引用
深拷贝
将内存中的所有数据重新创建一份
赋值:创建一个变量,该变量指向原来内存地址