题解 | #密码截取#

密码截取

https://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
        String input;
        while ((input = read.readLine()) != null) {
            OD od = new OD();

            System.out.println(od.HJ32_PassWordSub(input));

        }

    }
}

class OD {
    protected int HJ32_PassWordSub(String s) {
        int length = s.length();
        if (length == 1) return 1;
        if (length == 2 && s.charAt(0) == s.charAt(1)) {
            return 2;
        } else if (length == 2) {
            return 1;
        }
        int resL = 0;
        int resR = 0;
        if (s.equals(HJ32_getReversString(s)))return length;
        String substring_ = s;
        //ABBA型
        for (int j = 0; j < length; j++) {

            for (int i = 2; i < substring_.length(); i++) {
                String substring = substring_.substring(0, i);
                if (substring.length() * 2 > substring_.length()) break;
                if (substring.charAt(0) != substring_.charAt(substring.length() * 2 - 1))
                    continue;
                if (HJ32_JudgeReversAndReasonable(substring_, substring)) {
                    resL = Math.max(resL, substring.length() * 2);
                }
            }
            substring_ = s.substring(j);
        }
	  //ABA型
        for (int j = 0; j < length; j++) {

            for (int i = 2; i < substring_.length(); i++) {
                String substring = substring_.substring(0, i);
                if (substring.length() * 2 > substring_.length()) break;
                if (substring.charAt(0) != substring_.charAt(substring.length() * 2 - 2))
                    continue;
                if (HJ32_JudgeIsABA(substring_, substring)) {
                    resL = Math.max(resL, substring.length() * 2 - 1);
                }
            }
            substring_ = s.substring(j);
        }



        return resL;
    }
    private String HJ32_getReversString(String s) {
        StringBuilder stringBuilder = new StringBuilder(s);
        return stringBuilder.reverse().toString();
    }
    private boolean HJ32_JudgeReversAndReasonable(String substring_,
            String substring) {
        if (substring.length() * 2 > substring_.length()) return false;
        String temp = substring_.substring(substring.length(), substring.length() * 2);
        return HJ32_getReversString(temp).equals(substring);
    }
    private boolean HJ32_JudgeIsABA(String substring_, String substring) {
        if (substring.length() * 2 - 1 > substring_.length()) return false;
        String temp = substring_.substring(substring.length() - 1,
                                           substring.length() * 2 - 1);
        return HJ32_getReversString(temp).equals(substring);
    }

}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务