现在的位置: 首页 > 综合 > 正文

据说是网易有道的一道笔试题3(java)

2013年03月10日 ⁄ 综合 ⁄ 共 1045字 ⁄ 字号 评论关闭

给定一个字串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));
 }

}

抱歉!评论已关闭.