华为oj--字符串截取(最长回文字符串)
来源:互联网 发布:java验证码工具类 编辑:程序博客网 时间:2024/06/06 11:35
Catcher是MCA国的情报员,他工作时发现敌国会用一些对称的密码进行通信,比如像这些ABBA,ABA,A,123321,但是他们有时
会在开始或结束时加入一些无关的字符以防止别国破解。比如进行下列变化 ABBA->12ABBA,ABA->ABAKK,123321->51233214 。
因为截获的串太长了,而且存在多种可能的情况(abaaab可看作是aba,或baaab的加密形式),Cathcer的工作量实在是太大了,他
只能向电脑高手求助,你能帮Catcher找出最长的有效密码串吗?
思路:本题实际上是求一个字符串中的最长回文字符串。要求最长回文字符串,则需要找到回文字符串的对称点,对于输入的字符
串的(每个字符)或者(该字符和其相邻字符)进行判断其是否是回文串的对称点,他们分别为回文串长度为奇数和偶数的情况,
即aba或者abba。
/** * 输入 输入一个字符串 * 输出 返回有效密码串的最大长度 * 样例输入 ABBA * 样例输出 4 */import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner scanner=new Scanner(System.in); String s=scanner.next(); int t1=0; int t2=0; int temp=0; int max=0; for(int i=1;i<s.length()-1;i++){ t1=getLength(s,i,i);//回文串长度为奇数 t2=getLength(s,i,i+1);//回文串长度为偶数 temp=t1>t2?t1:t2; if(max<temp){ max=temp; } } System.out.println(max);}public static int getLength(String s, int i, int j) {int length=0;while(i>=0&&j<s.length()){if(s.charAt(i)==s.charAt(j)){if(i==j){length++;}else{length=length+2;}i--;j++;}else{break;}}return length;}}
0 0
- 华为oj--字符串截取(最长回文字符串)
- OJ中--------字符串截取+字符串运用-密码截取(最长回文判断)
- 【华为oj】字符串运用-密码截取
- 【华为oj】密码截取(字符串对称)
- 华为OJ(字符串运用-密码截取)
- 华为OJ(按字节截取字符串)
- 华为oj 字符串运用-密码截取
- 字符串运用-密码截取(华为oj)
- 【华为OJ】【027-字符串运用-密码截取】
- 【华为OJ】【057-字符串运用-密码截取】
- 【华为OJ】【088-按字节截取字符串】
- 华为OJ:字符串运用-密码截取
- 华为OJ:按字节截取字符串
- 华为OJ 字符串运用-密码截取
- 华为oj中级 字符串运用-密码截取
- 华为OJ字符串运用-密码截取
- 字符串运用-密码截取(最长回文子串)
- 华为2017年大牛机试题—最长回文字符串
- Linux 安装32位兼容库
- Effective Modern C++ 条款27 熟悉替代重载通用引用的方法
- crontab命令格式说明
- 这么做,真的可以吗?
- 错题整理之网络(二)
- 华为oj--字符串截取(最长回文字符串)
- STL_算法(26)_重排和分区 random_shuffle() ;partition() ;stable_partion()
- Java 学习笔记(0x05) 继承
- 六大设计原则
- Android四大组件之一——Activity
- 解决React Native的Image组件中不更新图片的问题
- 2016-09-02
- Android 摆动的球体
- uCOSIII学习笔记之OSCtrSW( )