gpt4 book ai didi

algorithm - 将所有 A 替换为 B,将所有 B 替换为 A

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:06:19 25 4
gpt4 key购买 nike

假设我想切换某些词对。比方说,我想将换成,将老鼠换成老鼠,这样

This is my opinion about dogs and cats: I like dogs but I don't like cats. This is my opinion about mice and rats: I'm afraid of mice but I'm not afraid of rats.

成为

This is my opinion about cats and dogs: I like cats but I don't like dogs. This is my opinion about rats and mice: I'm afraid of rats but I'm not afraid of mice.

天真的方法

text = text.replace("dogs", "cats")
.replace("cats", "dogs")
.replace("mice", "rats")
.replace("rats", "mice")

是有问题的,因为它可以多次对相同的词执行替换。以上任何一个例句都会变成

This is my opinion about dogs and dogs: I like dogs but I don't like dogs. This is my opinion about mice and mice: I'm afraid of mice but I'm not afraid of mice.

替换字符串对同时防止多次替换的最简单算法是什么?

最佳答案

使用您认为合适的任何字符串搜索算法,只要它能够搜索正则表达式即可。搜索与您要交换的所有单词匹配的正则表达式,例如狗|猫|老鼠|老鼠。为结果维护一个单独的字符串(在许多语言中,这需要某种 StringBuilder 以便快速重复追加),最初为空。对于每个匹配项,您都在前一个匹配项的末尾(或字符串的开头)和当前匹配项之间附加字符,然后将适当的替换项(大概是从 HashMap 中获得)附加到结果中。

大多数标准库应该允许您使用内置方法轻松完成此操作。有关 Java 示例,请参阅 Matcher.appendReplacement(StringBuffer, String) 的文档。我记得在 C# 中也这样做过,使用一个功能,您可以在其中指定一个 lambda 函数,该函数决定用什么替换每个匹配项。

关于algorithm - 将所有 A 替换为 B,将所有 B 替换为 A,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32085742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com