下面是代码实现:
def reverse_string_without_specific_characters(s: str, spec_chars: list[str]) -> str:
stack = []
spec_stack = []
# 将需要反转的字符和不需要反转的特定字符分别存入两个栈中
for c in s:
if c not in spec_chars:
stack.append(c)
else:
spec_stack.append(c)
# 反转字符栈中的内容
stack = list(reversed(stack))
# 将反转后的字符和不需要反转的特定字符插入到最终字符串中
result = ''
i = 0
j = 0
while i < len(stack) and j < len(spec_stack):
if s.find(spec_stack[j]) == i:
result += spec_stack[j]
j += 1
else:
result += stack[i]
i += 1
if i < len(stack):
result += ''.join(stack[i:])
if j < len(spec_stack):
result += ''.join(spec_stack[j:])
return result
示例:
s = 'ab#cde$f'
spec_chars = ['#', '$']
print(reverse_string_without_specific_characters(s, spec_chars)) # 结果为 'ed#cba$f'