输入一个字符串 比如xcbv123321sdsjhjh   求出最大回文字符串 输出123321

解决方案 »

  1.   

    function Test() { 
    var r, re; 
    var s = "xcbv123321sdsjhjh"; 
    re = /\d+/ig; 
    // 创建正则表达式模式。
    r = s.match(re); 
    alert(r);
    // 尝试去匹配搜索字符串。
    return r;
    }
      

  2.   

    public static void main(String[] args) {
    String str = "xcbv12344321sdsjhjh";
    String result = "";
    for(int i = 0; i < str.length(); i++) {
    //检查12321的情况
    result = check(result, str, i - 1, i+1);

    //检查123321的情况
    result = check(result, str, i, i+1);
    }
    System.out.println(result);
    }private static String check(String result, String str, int start, int end) {
    while(start >= 0 && end < str.length()) {
    if(str.charAt(start) != str.charAt(end))
    break;
    start--;
    end++;
    }
    start++;
    end--;
    if(start != end) {
    String tmp = str.substring(start, end + 1);
    if(tmp.length() > result.length())
    result = tmp;
    }
    return result;
    }
      

  3.   

    随便写就是了:public class Test { public static String maxPalindrome(String content) {
    if(content==null)
    return null;
    if(content.length()==0)
    return "";
    int index = 0;
    int length = 0; int i, j;
    for(i = 0; i<content.length(); i++) {
    for(j=1; 0<=i-j && i+j<content.length(); j++) {
    if(content.charAt(i-j)!=content.charAt(i+j)) {
    break;
    }
    }
    if(length < 2*j-1) {
    index = i-j+1;
    length = 2*j-1;
    }
    }
    for(i = 0; i<content.length(); i++) {
    for(j=0; 0<=i-j && i+1+j<content.length(); j++) {
    if(content.charAt(i-j)!=content.charAt(i+1+j)) {
    break;
    }
    }
    if(length < 2*j) {
    index = i-j+1;
    length = 2*j;
    }
    }
    return content.substring(index, index+length);

    }
    public static void main(String args[]) {
    System.out.println(maxPalindrome(null));
    System.out.println(maxPalindrome(""));
    System.out.println(maxPalindrome("1"));
    System.out.println(maxPalindrome("11"));
    System.out.println(maxPalindrome("12"));
    System.out.println(maxPalindrome("abcbaabddeda"));
    System.out.println(maxPalindrome("xcbv12321sdsjhjh"));
    System.out.println(maxPalindrome("xcbv123321sdsjhjh"));
    }}
    遍历字符串中的每个字符,从当前字符向两边扩散,找最长串。
      

  4.   

    求助:谁能帮忙把这这道题用java编出来,先谢啦。
    设计并实现一个windows系统中的“计算器”的窗口及功能。要求:至少要有0——9时个数字按钮,可以实现加,减,乘,除四运算。
      

  5.   

    以下程序测试通过!
    ===========
    public class Test
    {
    public static void main(String[] args) throws Exception 
    {
    //String str="abb";
    String str="xcbv123321sdsjhjh";
    System.out.println(getSString(str));
    } public static String getSString(String str)
    {
    int middle=1,len=0;
    int lMiddle=1,lLen=0;
    boolean flag=false;
    for(int i=0;i<str.length();i++)
    {  
    middle=i;
    len=0;
    //偶数长回文
        while(i-len>=0&&i+len+1<str.length()&&
         str.charAt(i-len)==str.charAt(i+len+1))
          len++;       
        if(len>lLen||(flag==false&&len==lLen)){
         lLen=len;
         lMiddle=middle;
         flag=true;
        }
        
        middle=i;
        len=1;
        //奇数长回文
        while(i-len>=0&&i+len<str.length()&&
         str.charAt(i-len)==str.charAt(i+len))
        len++;
    if(len>lLen){
        lLen=len;
        lMiddle=middle;
        flag=false;
    }
    }
    if(flag) return str.substring(lMiddle-lLen+1, lMiddle+lLen+1);
    else return str.substring(lMiddle-lLen+1, lMiddle+lLen);
    }
    }