网络

教育改变生活

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1262|回复: 0
打印 上一主题 下一主题

Java编程-字符串运用之密码截取

[复制链接]

97

主题

98

帖子

447

积分

版主

Rank: 7Rank: 7Rank: 7

积分
447
跳转到指定楼层
楼主
发表于 2020-11-11 14:53:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目描述:
Catcher是MCA国的情报员,他工作时发现敌国会用一些对称的密码进行通信,比如像这些ABBA,ABA,A,123321,但是他们有时会在开始或结束时加入一些无关的字符以防止别国破解。比如进行下列变化 ABBA->12ABBA,ABA->ABAKK,123321->51233214 。因为截获的串太长了,而且存在多种可能的情况(abaaab可看作是aba,或baaab的加密形式),Cathcer的工作量实在是太大了,他只能向电脑高手求助,你能帮Catcher找出最长的有效密码串吗?
本题含有多组样例输入。
输入描述:输入一个字符串
输出描述:返回有效密码串的最大长度

示例1
输入:ABBA
输出:4
实现代码:
import java.io.*;
import java.util.*;
public class Main{
    public static void main(String[] args)throws Exception{
      BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
        String str;
        while((str=reader.readLine())!=null){
            int max=0;
            char[] arr=str.toCharArray();
            for(int i=1;i<arr.length;i++){
                int left=i-1;
                int right=i;
                while(left>=0&&right<arr.length&&arr[left]==arr[right] ){
                    if(right-left+1>max){
                        max=right-left+1;
                    }
                    left--;
                    right++;
                }
               left=i-1;
                right=i+1;
                while(left>=0&&right<arr.length&&arr[left]==arr[right] ){
                    if(right-left+1>max){
                        max=right-left+1;
                    }
                    left--;
                    right++;
                }
            }
            System.out.println(max);
        }
         
    }

}



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

WEB前端

QQ|手机版|小黑屋|金桨网|助学堂  咨询请联系站长。

GMT+8, 2024-12-22 00:55 , Processed in 0.032666 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表