是否有一种使用if/else方法快速选择三个字符串(s1,s2,s3)中最长的一个?
我试过用这样的东西
if (s1.length() > s2.length()) {
System.out.println(s1); ...
但没有正确处理。
不要试图用if-else构造来编程所有可能的组合,因为如果添加更多的字符串,复杂性将呈指数增长。
此解决方案适用于少量线性复杂度的字符串:
string longest = s1;
if (s2.length() > longest.length()) {
longest = s2;
}
if (s3.length() > longest.length()) {
longest = s3;
}
System.out.println(longest);
对于数量较多的字符串,将它们放在集合中,然后使用循环查找最长的字符串。
您可以在C#中使用if,else if,else(如果您实际上没有使用Java,看起来您确实使用了)来处理这个问题。
string current = str;
if(str2.Length > current.Length)
{
current = str2;
}
if (str3.Length > current.Length)
{
current = str3;
}
除非使用if/else是此代码的要求,否则使用集合和LINQ将是一个更干净的选项。
List<string> strList = new List<string>
{
"str",
"strLen",
"strLength"
};
// This aggregate will return the longest string in a list.
string longestStr = strList.Aggregate("", (max, cur) => max.Length > cur.Length ? max : cur);
string a = "123";
string b = "1322";
string c = "122332";
if (a.Length > b.Length && a.Length > c.Length)
{
Console.WriteLine(a);
}
else if (b.Length > c.Length)
{
Console.WriteLine(b);
}
else
{
Console.WriteLine(c);
}
}