gpt4 book ai didi

java - 查找两个字符串的交集,其中返回两个字符串中出现的字符(与第一个字符串的序列顺序相同)

转载 作者:行者123 更新时间:2023-12-02 01:18:42 25 4
gpt4 key购买 nike

我正在使用 HashMap() 来解决该问题,但面临着输出中字符的顺序和出现的问题。

我尝试在迭代时和创建 StringBuilder 之后反转字符串生成器,但仍然面临另一个问题。

int l1 = inputStr1.length();
int l2 = inputStr2.length();

StringBuilder mkr = new StringBuilder();

HashMap<Character, Integer> res = new HashMap<>();

for (int i = 0; i < l1; i++) {
res.put(inputStr1.charAt(i),i);
}

for (int j = 0; j < l2; j++) {
if (res.containsKey(inputStr2.charAt(j))){
mkr.append(inputStr2.charAt(j));

}
}

mkr = mkr.reverse(); // Code only used in Test Scenario - 2
String result = mkr.toString();

if(result == null){return null;}

return result;

测试场景 1 -输入字符串 1:你好输入字符串2:世界预期输出为:lo我的代码生成的实际输出:ol

测试场景 2 - [反转 StringBuilder 后]输入字符串 1:嗨,你很好输入字符串 2:嗨,伙计预期输出是: hi a我的代码生成的实际输出:a ih

最佳答案

看来你的做法是正确的。但是,由于您期望最终的交集字符与输入字符串 1 保持一致,而不是为字符串 1 创建字符的 HashMap 并迭代字符串 2,因此如果颠倒这些操作,它将给出预期的答案。但这可能会返回重复项。例如,如果 inputString1 = 'apple' 且 inputString2 = 'pot',此方法可能会返回两个 p,而不是 1。为了避免此问题,一旦该字符与 inputString1 中的字符匹配,您可以从 hashmap 中删除该字符。

int l1 = inputStr1.length();
int l2 = inputStr2.length();

StringBuilder mkr = new StringBuilder();

HashMap<Character, Integer> res = new HashMap<>();

for (int i = 0; i < l2; i++) {
res.put(inputStr2.charAt(i),i);
}

for (int j = 0; j < l1; j++) {
if (res.containsKey(inputStr1.charAt(j))){
res.remove(inputStr1.charAt(j));
mkr.append(inputStr1.charAt(j);

}
}

String result = mkr.toString();
if(result == null){return null;}
return result;

关于java - 查找两个字符串的交集,其中返回两个字符串中出现的字符(与第一个字符串的序列顺序相同),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57639473/

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