关闭

华为机试---字符串运用-密码截取

标签: java华为
100人阅读 评论(0) 收藏 举报
分类:

题目描述

Catcher是MCA国的情报员,他工作时发现敌国会用一些对称的密码进行通信,比如像这些ABBA,ABA,A,123321,但是他们有时会在开始或结束时加入一些无关的字符以防止别国破解。比如进行下列变化 ABBA->12ABBA,ABA->ABAKK,123321->51233214 。因为截获的串太长了,而且存在多种可能的情况(abaaab可看作是aba,或baaab的加密形式),Cathcer的工作量实在是太大了,他只能向电脑高手求助,你能帮Catcher找出最长的有效密码串吗?



输入描述:

输入一个字符串


输出描述:

返回有效密码串的最大长度


输入例子:
ABBA

输出例子:
4

import java.util.Scanner;


public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while (scan.hasNext()) {
String str = scan.nextLine();
int max = getMaxLength(str);
System.out.println(max);
}//endwhile
scan.close();
}
/**
* 寻找最大回文字符串,返回它的长度
* 算法思想:定义两个下标标记位(low,high),low从前往后遍历,high从后往前遍历              
* */
private static int getMaxLength(String str){
int max_length = 0;
int str_length = str.length();
int low = 0;
int high = 0;
for(int i = 0 ; i < str_length - 1; i++){
for(int j = str_length - 1 ; j > i ; j--){
low = i;
high = j;
if(str.charAt(low) == str.charAt(high)){
while(str.charAt(low + 1) == str.charAt(high - 1)){
low++;
high--;
if(low > high){
if(max_length < j - i + 1){
max_length = j - i + 1;
}
break;
}
}//endwhile
}//endif
}//endfor_j
}//endfor_i
return max_length;
}
}

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:32103次
    • 积分:1121
    • 等级:
    • 排名:千里之外
    • 原创:79篇
    • 转载:0篇
    • 译文:0篇
    • 评论:7条
    文章分类
    文章存档
    最新评论