Java 打印具有最多重复字符集的子字符串

Java 打印具有最多重复字符集的子字符串,java,algorithm,Java,Algorithm,如果我有像这样的数字 12341345614145612 它应该打印12341345614145621,因为1来了4次 例2:23421314567 它应该打印2 3 4 2,因为它的出现次数最多 我知道基本的方法,我们必须找到最大出现位数,然后我们必须在输入数组中搜索该位数的开始和最后一个索引并打印它 如果可能的话,我想要其他更好的方法 对于字符串中的每个字符,保持计数,以及其在映射中第一次和最后一次出现的索引(见下文) 完成映射后,遍历其值,并选择一个具有最高计数的值;选择解决关系的策略

如果我有像这样的数字 12341345614145612

它应该打印
12341345614145621
,因为1来了4次

例2:23421314567

它应该打印
2 3 4 2
,因为它的出现次数最多

我知道基本的方法,我们必须找到最大出现位数,然后我们必须在输入数组中搜索该位数的开始和最后一个索引并打印它

如果可能的话,我想要其他更好的方法

  • 对于字符串中的每个字符,保持计数,以及其在
    映射中第一次和最后一次出现的索引(见下文)
  • 完成映射后,遍历其值,并选择一个具有最高计数的值;选择解决关系的策略
  • 第一个
    最后一个
    之间取一个子字符串,用于计数最大的值
Class
FirstAndLast
是一个表示一对整数的简单对象:

class FirstAndLast {
    private int first, last, count;
    public FirstAndLast(int index) { first = last = index; count = 1;}
    public int getFirst() { return first; }
    public int getLast() { return last; }
    public int getCount() { return count; }
    public void setFirst(int index) { first = index; }
    public void setLast(int index) { last = index; }
    public void incrementCount() { count++; }
}
  • 对于字符串中的每个字符,保持计数,以及其在
    映射中第一次和最后一次出现的索引(见下文)
  • 完成映射后,遍历其值,并选择一个具有最高计数的值;选择解决关系的策略
  • 第一个
    最后一个
    之间取一个子字符串,用于计数最大的值
Class
FirstAndLast
是一个表示一对整数的简单对象:

class FirstAndLast {
    private int first, last, count;
    public FirstAndLast(int index) { first = last = index; count = 1;}
    public int getFirst() { return first; }
    public int getLast() { return last; }
    public int getCount() { return count; }
    public void setFirst(int index) { first = index; }
    public void setLast(int index) { last = index; }
    public void incrementCount() { count++; }
}

代码在哪里?以这种方式实现它,然后看看您是否有任何性能问题。我认为您现有的方法已经很好了。如果你有一个可行的解决方案,我认为没有理由改变它。但是:你对规则的描述是不完整的。例如,如果我们有“1 2 1 2”,它应该打印“1 2 1”还是“2 1 2”?两个数字出现两次,但您尚未告诉我们在这种情况下的规则。请在键值对中添加您的值,并在每次出现时更新键值。您将获得其密钥中出现率最高的项目。@C-Otto请检查我的标签。。我不是要密码。如果可能的话,我只想知道更好的算法。代码在哪里?用那种方式实现它,然后看看你是否有任何性能问题。我认为你现有的方法已经很好了。如果你有一个可行的解决方案,我认为没有理由改变它。但是:你对规则的描述是不完整的。例如,如果我们有“1 2 1 2”,它应该打印“1 2 1”还是“2 1 2”?两个数字出现两次,但您尚未告诉我们在这种情况下的规则。请在键值对中添加您的值,并在每次出现时更新键值。您将获得其密钥中出现率最高的项目。@C-Otto请检查我的标签。。我不是要密码。如果可能的话,我只想知道更好的算法。