简单7:字符串变形
题目描述
输入描述:
返回值描述:
示例1
"This is a sample",16
"SAMPLE A IS tHIS"
示例2
"nowcoder",8
"NOWCODER"
示例3
"iOS",3
"Ios"
将单词位置的反转,那肯定前后都是逆序,不如我们先将整个字符串反转,这样是不是单词的位置也就随之反转了。但是单词里面的成分也反转了啊,既然如此我们再将单词里面的部分反转过来就行。
具体做法:
- step 1:遍历字符串,遇到小写字母,转换成大写,遇到大写字母,转换成小写,遇到空格正常不变。
- step 2:第一次反转整个字符串,这样基本的单词逆序就有了,但是每个单词的字符也是逆的。
- step 3:再次遍历字符串,以每个空间为界,将每个单词反转回正常。
方法一:
class Solution:
def trans(self , s: str, n: int) -> str:
if n==0:
return s
res = ""
for i in range(n):
#大小写转换
if s[i] <= 'Z' and s[i] >= 'A':
res += chr(ord(s[i]) - ord('A') + ord('a'))
elif s[i] >= 'a' and s[i] <= 'z':
res += chr(ord(s[i]) - ord('a') + ord('A'))
else :
#空格直接复制
res+=s[i]
#单词反序
res = list(res.split(' '))
res = res[::-1]
return ' '.join(res)
方法二:
class Solution:
def trans(self, s, n):
l = s.split(' ') # 将原字符串按照空格分隔成list
l = l[::-1] # 翻转list内的所有单词
s = ""
for letter in l:
letter = letter.swapcase() # 调整大小写
s += letter # 重新串成一个字符串
s += ' '
return s[0:len(s)-1]
方法三:
class Solution:
def trans(self , s: str, n: int) -> str:
s0=[]
for i in s:
if i!=' ':
if i.islower():
s0.append(i.upper())
else:
s0.append(i.lower())
else:
s0.append(' ')
s0=''.join(s0).split(' ')
return ' '.join(s0[::-1])

浙公网安备 33010602011771号