遇到大写 M,复制前一个字符(然后删除 M),遇到大写 N 从字符串中删除下一个字符
Capital M is encountered, duplicate previous character (then remove the M), and capital N is encountered remove the next character from the string
- 每当遇到大写 'M' 时,复制前一个字符(然后删除 'M')
- 每当遇到大写 'N' 时,从字符串中删除下一个字符(然后删除 'N')。
- 字符串中的所有其他字符均为小写字母。
- 例如:“abcNdgM”应该 return“abcgg”。最终字符串永远不会为空。
def StringChanges(str):
str2 = []
list = ""
for i in str:
if i == 'M':
str2.pop(i)
str -= 1
i -= 1
elif i == 'N':
if i == list - 1:
str2.pop()
else:
str2.append(i)
list -= 2
i -= 2
return ''.join(str2)
str = "oMoMkkNrrN"
print(StringChanges(str))
像这样使用re.sub
:
import re
strings = ['abcNdgM', 'abcdg', 'MrtyNNgMM']
for s in strings:
# Repeat the cycles of transforming M/N with previous or subsequent characters:
while True:
s_new = re.sub(r'N.', '', re.sub(r'(.)M', r'', s))
if s == s_new:
break
s = s_new
# Remove any remaining Ms and Ns:
s = re.sub(r'[MN]+', '', s)
print(s)
# abcgg
# abcdg
# rtyggg
r'STRING'
: raw string.
.
: 任意 1 个字符。
:捕获第 1 组,即与括号内的模式匹配的任何内容。
在这个 python 代码中,i
是一个字符串,在 for
循环的每次迭代中一次获取每个字母的值。但是在您链接的 cupofprogramming
示例中,i
是一个整数,表示循环的每次迭代中字母的 位置 (索引)。如果您希望此代码使用每个字母的索引,请查看 enumerate() 函数的工作原理。
- 每当遇到大写 'M' 时,复制前一个字符(然后删除 'M')
- 每当遇到大写 'N' 时,从字符串中删除下一个字符(然后删除 'N')。
- 字符串中的所有其他字符均为小写字母。
- 例如:“abcNdgM”应该 return“abcgg”。最终字符串永远不会为空。
def StringChanges(str):
str2 = []
list = ""
for i in str:
if i == 'M':
str2.pop(i)
str -= 1
i -= 1
elif i == 'N':
if i == list - 1:
str2.pop()
else:
str2.append(i)
list -= 2
i -= 2
return ''.join(str2)
str = "oMoMkkNrrN"
print(StringChanges(str))
像这样使用re.sub
:
import re
strings = ['abcNdgM', 'abcdg', 'MrtyNNgMM']
for s in strings:
# Repeat the cycles of transforming M/N with previous or subsequent characters:
while True:
s_new = re.sub(r'N.', '', re.sub(r'(.)M', r'', s))
if s == s_new:
break
s = s_new
# Remove any remaining Ms and Ns:
s = re.sub(r'[MN]+', '', s)
print(s)
# abcgg
# abcdg
# rtyggg
r'STRING'
: raw string.
.
: 任意 1 个字符。
:捕获第 1 组,即与括号内的模式匹配的任何内容。
在这个 python 代码中,i
是一个字符串,在 for
循环的每次迭代中一次获取每个字母的值。但是在您链接的 cupofprogramming
示例中,i
是一个整数,表示循环的每次迭代中字母的 位置 (索引)。如果您希望此代码使用每个字母的索引,请查看 enumerate() 函数的工作原理。