java:如何知道字符串中重复的单词?

时间:2016-12-04 10:57:44

标签: java string

如果有一种方法(java)知道字符串中的reapeated单词,请告诉我吗?例: 检查这个重复的单词 字符串" hihihi "在这种情况下,重新定义的单词是" hi "。

string" hellohellohellohello "在这种情况下,重新定义的单词是" hello "。

字符串" 费用"在这种情况下,重写的单词是" 费用"。

string" AAAAAAAAAAAA "在这种情况下,重新定义的单词是" A "。

知道重复的单词由 1到6 个字符组成。

最诚挚的问候,玛雅

3 个答案:

答案 0 :(得分:3)

算法很简单:

  • 查看第一个字符是否在整个字符串中重复
  • 查看字符串中是否重复前两个字符
  • 查看整个字符串中是否重复前三个字符
  • 查看整个字符串中是否重复前四个字符
  • 查看整个字符串中是否重复前五个字符
  • 查看整个字符串中是否重复前六个字符

要查看字符i是否是单词中初始k个字符的重复字符,请使用

if (s.charAt(i) == s.charAt(i%k))

其中k是您要检查的单词的长度。如果所有字母都通过了针对特定k的此测试,并且字符串的长度可以被k整除(即s.length() % k == 0),那么单词s由重复的单词组成长度为k

答案 1 :(得分:0)

没有内置的Java函数来执行此操作,因此您必须编写自己的程序。

首先看看你的例子" hellohellohellohello"。这个词"你好"重复,#34; hell"," ello"," hel"等课程中有一个问题的感觉,所以请咨询教师,只需要最长的单词。

首先找到最长的重复单词,最多六个字符。尝试六个字符的重复单词。如果没有一个,那么寻找一个五个字符的重复单词,依此类推,直到一个字符的重复单词。从最长的开始,你将避免浪费时间找到更短的单词(如果不需要)。如果您的导师想要所有单词,那么您找到它们的顺序无关紧要。

这意味着您需要编写一个方法来在字符串中查找n个字符的重复单词,其中n是您传递给方法的参数。专注于首先编写该方法。如果遇到问题,请再次询问。

答案 2 :(得分:0)

此代码将解决您的问题。但这不是一般的。

public class MaxSubString {
    private final static int MAX_SUB_STRING_LENGTH = 6;

    public static void main(String [] args){
        System.out.println(maxSubString("hellohellohello")); // result is hello
        System.out.println(maxSubString("helhelhel")); // result is hel
        System.out.println(maxSubString("AAAAAAAAAAAAA")); // result is A
        System.out.println(maxSubString("hehehehehehe")); // result is he
    }

    public static String maxSubString(String inputString){
        int maxSubStringLength = calculateMaxSubStringLength( inputString);
        return inputString.substring(0,maxSubStringLength);
    }

    public static int calculateMaxSubStringLength(String inputString) {
        int result = -1;
        for(int i= MAX_SUB_STRING_LENGTH ; i>0 ; i--){
            if(inputString.length() < i *2)
                continue;
            if (inputString.substring(0,i).equals(inputString.substring(i , 2*i)))
            result = i;
        }
        return result;
    }
}