如何打印三个字符串中最长的一个?
how to print the longest of three strings?
是否有使用 if/else 方法 select 三个字符串 (s1,s2,s3) 中最长的一个的快速方法?
我正在使用 Java
我试过用这样的东西
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);
}
}
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);
}
创建一个数组并将一个字符串输入到数组的每个部分(可以通过循环或手动添加- String[] st= new st String[];
然后你可以: st[0]="aaa"; st[1]="eff"
...之后你可以使用一个循环,它获取数组 [i] 中字符串的当前长度并使用变量 max(将从 0 开始)使用 Math.max() 函数保持最大长度。
如果长度(整数)大于最大值,则将字符串保存在字符串变量中,循环将遍历数组中的每个字符串,并在需要时更新最大值。在此之后,您可以 return 或打印最长的字符串。
这是许多方法之一。或者你可以做三个 if 来检查。此方法适用于大量字符串。
没有按照 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]);
}
是否有使用 if/else 方法 select 三个字符串 (s1,s2,s3) 中最长的一个的快速方法?
我正在使用 Java
我试过用这样的东西
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);
}
}
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);
}
创建一个数组并将一个字符串输入到数组的每个部分(可以通过循环或手动添加- String[] st= new st String[];
然后你可以: st[0]="aaa"; st[1]="eff"
...之后你可以使用一个循环,它获取数组 [i] 中字符串的当前长度并使用变量 max(将从 0 开始)使用 Math.max() 函数保持最大长度。
如果长度(整数)大于最大值,则将字符串保存在字符串变量中,循环将遍历数组中的每个字符串,并在需要时更新最大值。在此之后,您可以 return 或打印最长的字符串。
这是许多方法之一。或者你可以做三个 if 来检查。此方法适用于大量字符串。
没有按照 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]);
}