【美图】java开发工程师第一题
发布于 2017-04-16 20:35 1950 次浏览 0 赞 来自 笔试面试  

美图第一题,求最长的不等子串,最暴力的方法


第二题有点复杂,一时没有思路就没做了,然后跑去做好未来的在线笔试


import java.util.Scanner;

public class Main {


/*请完成下面这个函数,实现题目要求的功能*/
/*当然,你也可以不按照下面这个模板来作答,完全按照自己的想法来 ^-^ */

    /******************************开始写代码******************************/
    static String calDuplicateString(String str) {
        if (str == null || str.length() == 0 || str.matches(" *")) {
            return "";
        }
        int pre = 0;
        String max = "";
        for (int i = 1; i < str.length(); i++) {
            while (!contains(str, pre, i)) {
                i++;
            }
            if (i - pre > max.length()) {
                max = str.substring(pre, i);
            }
            pre++;
        }
        return max;
    }

    //pre到i-1 是否有与i上相同的字符
    private static boolean contains(String str, int pre, int i) {
        if (pre < str.length() && i < str.length() && pre < i) {
            for (int j = pre; j < i; j++) {
                if (str.charAt(j) == str.charAt(i)) {
                    return true;
                }
            }
        }
        return false;
    }

    /******************************结束写代码******************************/


    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String res;

        String _str;
        try {
            _str = in.nextLine();
        } catch (Exception e) {
            _str = null;
        }

        res = calDuplicateString(_str);
        System.out.println(res);
    }
}


1 条回复

import java.util.*;


public class Main {



/*请完成下面这个函数,实现题目要求的功能*/

/*当然,你也可以不按照下面这个模板来作答,完全按照自己的想法来 ^-^ */

/******************************开始写代码******************************/

    static String calDuplicateString(String str) {

   

    int n = str.length();

    int max = 0;

    int L = 1;

    boolean flag = false;

    int start = 0;

    int end = 0;

    int jieguo =0;

    for(int i=0;i<n-1;i++){

    L = 1;

    for(int j=i+1;j<n;j++){

    jieguo = j;

    flag = false;

    for(int k=i;k<j;k++){

    if(str.charAt(k)==str.charAt(j)){

    flag = true;

    break;

        }

    }

    if(flag ==false){

L++;

}else{

break;

}

    }

    if(L>max){

max = L;

start = i;

end = jieguo;

}

    }

    String out = "";

    for(int m=start;m<end;m++){

    out +=str.charAt(m);

    }

    return out;

    }

/******************************结束写代码******************************/



    public static void main(String[] args){

        Scanner in = new Scanner(System.in);

        String res;

            

        String _str;

        try {

            _str = in.nextLine();

        } catch (Exception e) {

            _str = null;

        }

  

        res = calDuplicateString(_str);

        System.out.println(res);

    }

}


2017-04-17 00:22
添加回复
回到顶部