1、替換空格
(1)題目:請實現一個函數,將一個字符串中的空格替換成“%20”。例如,當字符串爲We Are Happy.則經過替換之後的字符串爲We%20Are%20Happy。
(2)思路:將字符串轉換成list的形式進行處理,用join的方式將list轉化成string形式
(3)實現代碼:
def replaceSpace(self, s):
s = list(s)
n=len(s)
for i in range(n):
if s[i]==' ':
s[i]='%20'
return ''.join(s)
2、字符串的排列
(1)題目:輸入一個字符串,按字典序打印出該字符串中字符的所有排列。例如輸入字符串abc,則打印出由字符a,b,c所能排列出來的所有字符串abc,acb,bac,bca,cab和cba。
(2)輸入要求:輸入一個字符串,長度不超過9(可能有字符重複),字符只包括大小寫字母。
(3)思路:先挑選出所有可以放在第一位的字符,也就是把第一個字符與剩餘部分每個字符交換一次。然後求除第一個字符外的所有字符的全排列。
(4)實現代碼:
class Solution:
def Permutation(self, ss):
out = set()
if len(ss) == 0:
return False
charlist = list(ss)
self.permutation(charlist, 0, out)
return sorted(list(out))
def permutation(self, ss, begin, out):
if begin == len(ss)-1:
out.add(''.join(ss[:]))
else:
for i in range(begin, len(ss)):
if ss[begin] == ss[i] and begin != i:
continue
else:
ss[begin], ss[i] = ss[i], ss[begin]
self.permutation(ss, begin + 1, out)
ss[begin], ss[i] = ss[i], ss[begin]
3、左旋轉字符串
(1)題目:彙編語言中有一種移位指令叫做循環左移(ROL),現在有個簡單的任務,就是用字符串模擬這個指令的運算結果。對於一個給定的字符序列S,請你把其循環左移K位後的序列輸出。例如,字符序列S=”abcXYZdef”,要求輸出循環左移3位後的結果,即“XYZdefabc”。
(2)實現代碼:
方法1:
class Solution:
def LeftRotateString(self, s, n):
m = len(s)
if m == 0:
return False
b = n % m
return s[b:]+s[:b]
方法2:
class Solution:
def LeftRotateString(self, s, n):
if not s or len(s) < n:
return False
s= list(s)
self.reverse(s,0,n-1)
self.reverse(s,n,len(s)-1)
self.reverse(s,0,len(s)-1)
s = ''.join(s)
return s
def reverse(self, s, start, end):
while start < end:
s[start], s[end] = s[end], s[start]
start += 1
end -= 1