如果有一种方法(java)知道字符串中的reapeated单词,请告诉我吗?例: 检查这个重复的单词 字符串" hihihi "在这种情况下,重新定义的单词是" hi "。
string" hellohellohellohello "在这种情况下,重新定义的单词是" hello "。
字符串" 费用"在这种情况下,重写的单词是" 费用"。
string" AAAAAAAAAAAA "在这种情况下,重新定义的单词是" A "。
知道重复的单词由 1到6 个字符组成。
最诚挚的问候,玛雅
答案 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;
}
}