leetcode 131. Palindrome Partitioning
简单的思路:
深度优先搜索:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | class Solution { public : bool isPalin(string str) { int n=str.length(); int i=0; int j=n-1; while (i<j) { if (str[i]==str[j]) { i++; j--; } else return false ; } return true ; } void getPart(string s, vector<vector<string>>& result, vector<string> temp) { if (s.length()==0) { result.push_back(temp); return ; } string str1; string str2; for ( int i=1;i<=s.length();i++) { str1=s.substr(0,i); // cout<<str1<<endl; if (isPalin(str1)) { str2=s.substr(i); // cout<<str2<<endl; temp.push_back(str1); getPart(str2, result, temp); temp.pop_back(); } } } vector<vector<string>> partition(string s) { vector<vector<string>> result; vector<string> temp; getPart(s, result, temp); return result; } }; |
python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | class Solution( object ): def isPalin( self , s): n = len (s) - 1 m = 0 while (m<n): if (s[m]! = s[n]): return False else : m + = 1 n - = 1 return True def dfs( self ,s, stringlist): if len (s) = = 0 : Solution.result.append(stringlist) for i in range ( 1 , len (s) + 1 ): if ( self .isPalin(s[:i])): self .dfs(s[i:],stringlist + [s[:i]]) def partition( self , s): """ :type s: str :rtype: List[List[str]] """ Solution.result = [] self .dfs(s,[]) return Solution.result |
python 中传参数?
- python 中对象有类型,变量没有类型。所有的变量都可以理解为一个对象的“引用”。类似c中的void *类型。
- foo=1 # 指向int数据类型的foo(foo 没有类型)
- lfoo=[1]# 指向list类型的lfoo。
- 可更改对象与不可更改对象
- python中 strings, tuples, numbers 不可更改,
- list, dict 可更改
- foo=1
- foo=2 内存中原始1 对象不可变,foo指向一个新的int 对象,
- lfoo=[1]
- lfoo[0]=2 更改list 中的第一个元素,list 可变,所有第一个元素变为2。 lfoo 指向一个包含一个对象的数组。 赋值时,是一个新int 对象被指定对lfoo 所指向的数组对象中的第一个元素。但对于lfoo, 所指向的数组对象并没有变化, 只是数组内部发生了变化。
- 参数传递
- python 中的参数传递可以理解为变量传值操作
-
1234567891011121314
def
changeI(c):
c
=
10
if
__name__
=
=
"__main__"
:
# nums=[100, 4, 200,1,3,2]
# s=Solution()
# c=s.longestConsecutive(nums)
a
=
2
changeI(a)
print
(a)
a 输出依然为2,对于一个int 对象2, 和指向它的变量a, 值传递,复制了变量a的值。a,c 指向同一个int 对象,c=10,int 不能改变,生成一个新的int 对象,c指向这个新对象,a指向的对象没有变化。
-
12345678910111213
def
changeI(c):
c[
0
]
=
10
if
__name__
=
=
"__main__"
:
# nums=[100, 4, 200,1,3,2]
# s=Solution()
# c=s.longestConsecutive(nums)
a
=
[
2
]
changeI(a)
print
(a[
0
])
输出10,变量依旧是传值,复制a的值,a和c 指向同一个对象,但是list 可改变对象,对 c[0]的操作,就是对a的操作。
python 中的string类型?
- 可取slide var2[1:5] 截取[:]
- +, in, not in, *2(重复输出)
- string.capitalize()
- .center(width): 使居中
- .count(str, beg=0, end=len(string)) , str 出现的次数
- string.decode(encoding='UTF-8', errors='strict')
- string.endswith(obj, beg=0, end=len(string))
- string.find(str, beg=0, end=len(string))
- string.index(str, beg=0, end=len(string))跟find()方法一样,只不过如果str不在 string中会报一个异常.
- string.isalnum()如果 string 至少有一个字符并且所有字符都是字母或数字则返
回 True,否则返回 False
- string.isdigit()
- string.islower()
- string.join(seq)
- string.replace(str1, str2, num=string.count(str1))把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次.
python 中的list 类型?
python 中的set 类型?
- issubset()
- in , not in
- union, intersection, difference
- .discard(a)
- .remove(a) , 不存在时, 回报错。
python 中的in? range 的范围?
python 中的self?
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步