博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Longest Palindromic Substring
阅读量:5843 次
发布时间:2019-06-18

本文共 2260 字,大约阅读时间需要 7 分钟。

回文是指正着读和倒着读,结果一些样,比如abcba或abba。

听说有三种方法:

法一:就是我这种呆子能想到的,遍历啊,但时间复杂度应该是O^3,而且算法过程复杂,要是没我的思路清晰,头脑敏捷,不骄不躁,就换下一个方法吧O(∩_∩)O

import java.io.BufferedReader;

import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Scanner;

public class Five{
public static void longestPalindrome(String s) {
ArrayList<Integer> List = new ArrayList<Integer>();
String temp="0";
for(int i=0;i<s.length();i++)
{
char item1=s.charAt(i);
temp=temp+item1;
for(int j=i+1;j<s.length();j++)
if(s.charAt(j)!=item1)
temp=temp+s.charAt(j);
else
{
temp=temp+s.charAt(j);
int loc = temp.indexOf("0");
String newStr=temp.substring(0,loc);
List.add(newStr);
}
}
String LongestSubstring = null;
for(int k=1;k<List.size();k++)
{
System.out.println((String) List.get(k-1));
if(((String) List.get(k-1)).length()<((String) List.get(k)).length())
LongestSubstring=((String) List.get(k));
else
LongestSubstring=((String) List.get(k-1));
}
System.out.println(LongestSubstring);
}
public static void main(String args[]) throws IOException{
//BufferedReader rd = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入一个字符串:");
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
longestPalindrome(line);
}
}

法二:动态规划。。参考别人的,自己肯定是想不到啦

import java.io.BufferedReader;

import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Scanner;
public class Five_third{
public static String longestPalindrome(String s) {
if (s == null || s.length() == 0) return "";
int n = s.length();
int max = 0, start = 0, end = 0;
boolean[][] c = new boolean[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
c[i][j] = i >= j ? true : false;
}
}
//c[i][j] 
for (int j = 1; j < n; j++) {
for (int i = 0; i < j; i++) {
if (s.charAt(i) == s.charAt(j) && c[i+1][j-1]) {
c[i][j] = true;
if (j - i + 1 > max) {
max = j - i + 1;
start = i;
end = j;
}
}
else
c[i][j] = false;
}
}
return s.substring(start, end+1);
}
public static void main(String[] args){
System.out.println("请输入一个字符串:");
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
String ins=longestPalindrome(line);
System.out.println(ins);
}
}

转载于:https://www.cnblogs.com/maowuyu-xb/p/6041011.html

你可能感兴趣的文章
RedHat6 管理应用服务【11】
查看>>
stm32F10x复习-1
查看>>
20135226黄坤信息安全系统设计基础期末总结
查看>>
轻松快捷创建VSFTP虚拟用户
查看>>
[转]Javascript原型继承
查看>>
[转] vue异步处理错误
查看>>
CSS 3D动画概述菜鸟级解读之一
查看>>
分布式系列文章 —— 从 ACID 到 CAP / BASE
查看>>
方法签名与方法重载
查看>>
matlab进行地图仪的绘制
查看>>
Strawberry Perl CPAN Install Module 安装 Module 方法
查看>>
kindeditor.net应用
查看>>
函数preg_replace()与str_replace()
查看>>
【Android开源框架】使用andbase开发框架实现绘制折线图
查看>>
Linux c括号作用域【原创笔记】
查看>>
用IPFS和以太坊存储数据
查看>>
Confluent平台5.0支持LDAP授权及用于IoT集成的MQTT代理
查看>>
诡异的xen故障:xenconsole: Could not read tty from store: No such file or directory
查看>>
HTTP工具CURL的使用简介
查看>>
选择“Asp.Net Web应用程序”还是“Asp.Net网站”?
查看>>