【发布时间】:2021-08-26 21:27:21
【问题描述】:
给定一个只能有字母的字符串输入。如果存在 AB、CD、BA、DC 的组合,则应通过删除这些出现并返回结果字符串来转换字符串。 示例:
- 输入:ABDCC -> 输出:C
- 输入:CABABD -> CABD -> CD -> 输出:空字符串 我使用字符串替换功能提出了以下解决方案,但正在寻找性能更高或替代的解决方案。有什么想法吗?
public String transformString(String s) {
HashSet<String> stringsToRemove = new HashSet();
stringsToRemove.add("AB");
stringsToRemove.add("BA");
stringsToRemove.add("CD");
stringsToRemove.add("DC");
int prevLength = -1;
while (prevLength != s.length()) {
prevLength = s.length();
for (String d : stringsToRemove) {
s = s.replace(d, "");
}
}
return s;
}
【问题讨论】:
-
问题可能比你想象的要难。例如,考虑要删除的字符串是 AB 和 BC,输入是 ABCB。您的代码将删除 AB 离开 CB。另一种答案是先删除 BC,留下 AB,然后删除 AB,留下一个空字符串。
标签: java string algorithm data-structures replace