给定一个字串X,求它最长字串S,使得S=SR,SR为S的反序,即如果S=abc,则SR=cba
例子:X=abccba,则输出S=abccba
code:
import java.util.Vector;
/**
* 给定一个字串X,求它最长字串S,使得S=SR,SR为S的反序,<br>
* 即如果S=abc,则SR=cba 例子:X=abccba,则输出S=abccba
*
* @author Administrator
*
*/
public class StringQ {
public String getSR(String exp) {
Vector<String> v = new Vector<String>();
String str;
for (int i = 0; i < exp.length(); i++) {
char c = exp.charAt(i);
int index = 0;
int start = i;
while (true) {
index = exp.indexOf(c, start + 1);
if (index == -1) {
break;
}
str = exp.substring(start, index + 1);
StringBuffer sb = new StringBuffer(str);
if (str.equals(sb.reverse().toString())) {
v.add(str);
}
start = index + 1;
}
}
int len = v.size();
if (len == 0) {
return null;
}
str = v.elementAt(0);
int lg = str.length();
int maxlen = 0;
for (int i = 1; i < len; i++) {
str = v.elementAt(i);
if (lg < str.length()) {
maxlen = i;
lg = str.length();
}
}
return v.elementAt(maxlen);
}
public static void main(String[] args) {
StringQ sq = new StringQ();
System.out.println(sq.getSR("abccbaeee"));
// System.out.println("abccbaeee".indexOf('a', 1));
}
}