提问者:小点点

如何打印三串中最长的一串?


是否有一种使用if/else方法快速选择三个字符串(s1,s2,s3)中最长的一个?

我试过用这样的东西

if (s1.length() > s2.length()) {
    System.out.println(s1); ...

但没有正确处理。


共3个答案

匿名用户

不要试图用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);
            }
        }