任務是查找由任意兩個唯一重複字符組成的給定字符串中的最長子字符串
Ex。在輸入字符串「aabadefghaabbaagad」,上最長的字符串爲「aabbaa」
如何查找包含兩個唯一重複字符的最長子字符串
我想出了以下的解決方案,但想看看是否有做同樣的
import java.util.*;
public class SubString {
public static void main(String[] args) {
//String inStr="defghgadaaaaabaababbbbbbd";
String inStr="aabadefghaabbaagad";
//String inStr="aaaaaaaaaaaaaaaaaaaa";
System.out.println("Input string is "+inStr);
StringBuilder sb = new StringBuilder(inStr.length());
String subStr="";
String interStr="";
String maxStr="";
int start=0,length=0, maxStart=0, maxlength=0, temp=0;
while(start+2<inStr.length())
{ int i=0;
temp=start;
char x = inStr.charAt(start);
char y = inStr.charAt(start+1);
sb.append(x);
sb.append(y);
while((x==y) && (start+2<inStr.length()))
{ start++;
y = inStr.charAt(start+1);
sb.append(y);
}
subStr=inStr.substring(start+2);
while(i<subStr.length())
{ if(subStr.charAt(i)==x || subStr.charAt(i)==y)
{ sb.append(subStr.charAt(i));
i++;
}
else
break;
}
interStr= sb.toString();
System.out.println("Intermediate string "+ interStr);
length=interStr.length();
if(maxlength<length)
{ maxlength=length;
length=0;
maxStr = new String(interStr);
maxStart=temp;
}
start++;
sb.setLength(0);
}
System.out.println("");
System.out.println("Longest string is "+maxStr.length()+" chars long "+maxStr);
}
}
您是否嘗試過正則表達式? – user1516873 2013-02-21 08:09:05
通過使用HashMap你可以做到這一點。 – 2013-02-21 08:12:57
[Find](http://en.wikipedia.org/wiki/Longest_common_substring_problem)[them](http://stackoverflow.com/questions/2929557/java-longest-common-subsequence)[here](http:/ /karussell.wordpress.com/2011/04/14/longest-common-substring-algorithm-in-java/) – Jayamohan 2013-02-21 08:13:28