按字典顺序比较两个字符串
Lexicographically comparing two strings
我正在尝试找出从输入中获取的长度为 z 的字典序最小和最大子字符串。
我不知道为什么,但是 if 条件在我试图找到最小子字符串的地方不起作用。
import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) {
Scanner ip=new Scanner(System.in);
String s=ip.next();
int z=ip.nextInt();
String max="";
String mini="";
String x="";
for(int i=0;i<s.length()-z;i++) {
x=s.substring(i,i+z);
if(x.compareTo((mini))<0) //this is not working
mini=x;
if(x.compareTo((max))>0)
max=x;
}
System.out.print(mini);
System.out.print(max);
}
}
声明两个变量 mini
和 max
的问题
您已经将它们初始化为空字符串,因此在将它们与 x
进行比较时,条件不会 return 预期结果,并且它们的值不会改变
你可以初始化它们:
mini = s.substring(0, z);
max = s.substring(0, z);
编辑:
如果您尝试测试此条件:
x.compareTo((""))
它总是 return 值大于 0
所以 mini
在任何情况下都不会改变。
我正在尝试找出从输入中获取的长度为 z 的字典序最小和最大子字符串。 我不知道为什么,但是 if 条件在我试图找到最小子字符串的地方不起作用。
import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) {
Scanner ip=new Scanner(System.in);
String s=ip.next();
int z=ip.nextInt();
String max="";
String mini="";
String x="";
for(int i=0;i<s.length()-z;i++) {
x=s.substring(i,i+z);
if(x.compareTo((mini))<0) //this is not working
mini=x;
if(x.compareTo((max))>0)
max=x;
}
System.out.print(mini);
System.out.print(max);
}
}
声明两个变量 mini
和 max
的问题
您已经将它们初始化为空字符串,因此在将它们与 x
进行比较时,条件不会 return 预期结果,并且它们的值不会改变
你可以初始化它们:
mini = s.substring(0, z);
max = s.substring(0, z);
编辑:
如果您尝试测试此条件:
x.compareTo((""))
它总是 return 值大于 0
所以 mini
在任何情况下都不会改变。