【问题标题】:how to print the longest of three strings?如何打印最长的三个字符串?
【发布时间】:2021-02-16 06:21:14
【问题描述】:

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

我正在使用 Java

我尝试过使用类似的东西

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

但没有做对。

【问题讨论】:

  • System.out.println 看起来很像 Java,而不是 C#...
  • 可能是 java,因为在 C# 中字符串长度是一个属性。将其设为 s1.Length,s1.length() 则暗示了 java 方法。

标签: java string if-statement string-length


【解决方案1】:

没有按照 OP 的要求使用 if-else,但更清洁的解决方案是:

void longest(String a, String b, String c) {
    String[] triplet = {a, b, c};
    Arrays.sort(triplet, Comparator.comparingInt(String::length));
    System.out.println(triplet[2]);
}

【讨论】:

    【解决方案2】:

    创建一个数组并在数组的每个部分输入一个字符串(可以通过循环或手动添加-String[] st= new st String[]; 然后你可以: st[0]="aaa"; st[1]="eff"...之后你可以使用一个循环来获取当前数组 [i] 处字符串的长度,并使用变量 max(将从 0 开始)使用 Math.max() 函数保持最高长度。 如果长度(这是一个整数)大于最大值,那么您将字符串保存在字符串变量中,循环将遍历数组中的每个字符串,并在需要时更新最大值。在此之后,您可以返回或打印最长的字符串。 这是许多方法之一。或者你可以做三个 if 来检查。此方法适用于大量字符串。

    【讨论】:

      【解决方案3】:

      if/then/else 构造 Java 与 C# 相同。您可以使用上述解决方案。 LINQ 就像 Java 中的 Streams。在 Java 中,您可以编写代码:

      public static void main(String args[]) {
        printtLongest ("VampireApi","C#-Api","Java Api");
      }
      
      public static void printtLongest(String ... strings){
           java.util.Arrays
            .stream(strings)
            .sorted(java.util.Comparator.comparingInt(String::length).reversed())
            .findFirst().ifPresent(System.out::println);
            
      }
      

      【讨论】:

        【解决方案4】:
                    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);
                    }
                }
        

        【讨论】:

          【解决方案5】:

          您可以在 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);
          

          【讨论】:

            【解决方案6】:

            不要尝试使用 if-else 结构来编程所有可能的组合,因为如果添加更多字符串,复杂性将呈指数级增长。

            此解决方案适用于具有线性复杂度的少量字符串:

            string longest = s1;
            if (s2.length() > longest.length()) {
                longest = s2;
            }
            if (s3.length() > longest.length()) {
                longest = s3;
            }
            System.out.println(longest);
            

            对于较大数量的字符串,将它们放入集合中并使用循环查找最长的字符串。

            【讨论】:

              猜你喜欢
              • 2022-11-20
              • 1970-01-01
              • 2017-02-03
              • 1970-01-01
              • 2021-12-11
              • 2018-06-13
              • 2016-06-14
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多