gpt4 book ai didi

java - 在字符串中查找中间词的输出没有按预期出现?

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

我的方法

为了得到一个中间词,我首先找到了每个字符串的长度。并检查了多个获取单词的条件,例如

如果这 2 个单词长度相等,如果没有单词长度相等,并且如果最后 2 个单词长度相等,我将逐个字符检查它们并使用 compareTo 进行其余逻辑。

But I am unable to satisfy one test case.

Qn Can anyone guide me what I have done wrong in my code.

 public String middleWord(String word1,String word2,String word3)
{
boolean b1=false;
boolean b2=false;
boolean b3=false;

int l1=word1.length();
int l2=word2.length();
int l3=word3.length();
if((l1>=l2)&&(l1>l3))
{
int p1=word1.compareTo(word2);
System.out.println(p1);

if(p1<0)
{
b1=true;
}
else
{
b2=true;
}
}
else if((l2>=l3)&&(l2>l1))
{
int p1=word2.compareTo(word3);
System.out.println(p1);

if(p1<0)
{
b2=true;
}
else
{
b3=true;
}
}
else if((l3>=l1)&&(l3>l2))
{
int p1=word1.compareTo(word3);
System.out.println(p1);

if(p1<0)
{
b1=true;
}
else
{
b3=true;
}
}
else if((l1>l2)&&(l1>l3))
{
if(l2>l3)
{
b2=true;
}
else if(l3>l2)
{
b3=true;
}
else
{
int p1=word2.compareTo(word3);
System.out.println(p1);

if(p1<0)
{
b2=true;
}
else
{
b3=true;
}

}
}
else if((l2>l3)&&(l2>l1))
{
if(l1>l3)
{
b1=true;
}
else if(l3>l1)
{
b3=true;
}
else
{
int p1=word1.compareTo(word3);
System.out.println(p1);

if(p1<0)
{
b1=true;
}
else
{
b3=true;
}

}


}
else if((l3>l1)&&(l3>l2))
{
if(l1>l2)
{
b1=true;
}
else if(l2>l1)
{
b2=true;
}
else
{
int p1=word1.compareTo(word2);
System.out.println(p1);

if(p1<0)
{
b1=true;
}
else
{
b2=true;
}

}
}
else if((l1==l2)&&(l1==l3))
{
int p1=word1.compareTo(word1);
int p2=word1.compareTo(word2);
int p3=word1.compareTo(word3);


System.out.println(p1);
System.out.println(p2);
System.out.println(p3);

if((p1<p2) &&(p1<p3))
{
if(p2<p3)
{
b2=true;

}
else
{
b3=true;
}
}
else if((p2<p3) &&(p2<p1))
{
if(p1<p3)
{
b1=true;

}
else
{
b3=true;
}
}
else if((p3<p2) &&(p3<p1))
{
if(p2<p1)
{
b2=true;

}
else
{
b1=true;
}
}
}
if(b1==true)
return word1;
else if(b2==true)
return word2;
else
return word3;

}
}

Parameters Actual Output Expected Output

'he' 'her' 'here' he her

最佳答案

对于您的 middleWord("he", "her", "here") 的特定情况,您正在使用第三个 else if 子句:

else if((l3>=l1)&&(l3>l2))
{
int p1=word1.compareTo(word3);
System.out.println(p1);

if(p1<0)
{
b1=true;
}
else
{
b3=true;
}
}

在这种情况下,l1 = 2, l2 = 3, l3 = 4, p1 = a -ve number 因为单词 1 的长度更小,所以将 b1 设置为 true。然后您返回 word1 因为:

if(b1==true)
return word1;
else if(b2==true)
return word2;
else
return word3;

是的,你的逻辑是错误的。好像您首先比较字符串的长度,然后按字典顺序进行比较。在这种情况下,您可以覆盖 compareTo 函数并对它们进行排序。然后返回第二个元素,这是一个更干净的解决方案。


好像你真的不需要比较长度,只想按字典顺序比较它们,你不能使用 Collections 或 Arrays 排序方法。在这种情况下,您可以只使用 Java String 的 compareTo。功能。

public static String middleWord1(String word1, String word2, String word3) {
if (word1.compareTo(word2) == 0 || word1.compareTo(word3) == 0)
// word1 == word2 or word1 == word3
return word1;
else if (word2.compareTo(word1) == 0 || word2.compareTo(word3) == 0)
// word2 == word1 or word2 == word3
return word2;
else if (word3.compareTo(word1) == 0 || word3.compareTo(word2) == 0)
// word3 == word1 or word3 == word2
return word3;
else if ((word2.compareTo(word1) < 0 && word1.compareTo(word3) < 0) ||
(word3.compareTo(word1) < 0 && word1.compareTo(word2) < 0))
// word2 < word1 < word3 or word3 < word1 < word2
return word1;
else if ((word1.compareTo(word2) < 0 && word2.compareTo(word3) < 0) ||
(word3.compareTo(word2) < 0 && word2.compareTo(word1) < 0))
// word1 < word2 < word3 or word3 < word2 < word1
return word2;
else
// word1 < word3 < word2 or word2 < word3 < word1
return word3;
}

关于java - 在字符串中查找中间词的输出没有按预期出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34185847/

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