【问题标题】:Lexicographically comparing two strings按字典顺序比较两个字符串
【发布时间】:2017-06-10 08:12:16
【问题描述】:

我试图找出从输入中获取的长度为 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 声明为空字符串,因此它不会更改。您应该将 mini 和 max 都初始化为输入字符串的任何 z 长度子字符串。 mini = max = s.substring(0, z);
  • @RahulJain 谢谢!

标签: java string compare lexicographic


【解决方案1】:

声明minimax这两个变量的问题

您已经将它们初始化为空字符串,因此在将它们与x 进行比较时,条件不会返回预期结果,并且它们的值不会改变

你可以初始化它们:

 mini = s.substring(0, z);
 max  = s.substring(0, z);

编辑

如果您尝试测试这种情况:

x.compareTo(("")) 它总是返回大于0 的值,所以mini 在任何情况下都不会改变。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 2015-03-31
    • 2022-01-02
    相关资源
    最近更新 更多