(字符串操作)LeetCode#5. Longest Palindromic Substring
来源:互联网 发布:java replace函数 正则 编辑:程序博客网 时间:2024/06/03 09:34
- 题目: 求字符串的最长回文子串
- 难度: Medium
- 思路: 遍历字符串,以每个元素为回文中心,向两边扩展找相同元素
- 代码:
方法一:
public class Solution { public String longestPalindrome(String s) { //思路:定义两个变量maxLen和start来存储最长回文长度以及起始位置 int len = s.length(); if(s == null || len == 1 || len == 0){ return s; } int maxLen = 0; int start = 0; for(int i = 0; i < len;){ if(len-i <= maxLen/2){ break; } //left和right始终指向子串的起始和结束位置 int left = i; int right = i; while(right < len-1 && s.charAt(right+1) == s.charAt(right)){ right++; } i = right+1;//下次一个驼着的起始位置 while(left > 0 && right < len-1 && s.charAt(left-1) == s.charAt(right+1)){ left--; right++; } if(right-left+1 > maxLen){ maxLen = right-left+1; start = left; } } return s.substring(start,start+maxLen); }}
方法二:
public class Solution { public String longestPalindrome(String s) { //思路:定义两个变量maxLen和start来存储最长回文长度以及起始位置 int len = s.length(); if(s == null || len == 1 || len == 0){ return s; } int maxLen = 0; String result = ""; for(int i = 0; i < len; i++){ int left = 0; int right = 0; //第一种情况:以第i个元素为中心,向两侧寻找相同元素 left = i-1; right = i+1; while(left >=0 && right <= len-1){ if(s.charAt(left) == s.charAt(right)){ left--; right++; }else{ break; }//当s.charAt(left) != s.charAt(right)时,一定要break,否则就会出现死循环 } //或者上面的while循环写成 //while(left >= 0 && right <= len-1 && s.charAt(left) == s.charAt(right)){ // left--; // right++; //} if(right-left-1 > maxLen){ maxLen = right-left-1; result = s.substring(left+1,right); } //第二种情况:以第i和第i+1为中心 left = i; right = i+1; while(left >= 0 && right <= len-1){ if(s.charAt(left) == s.charAt(right)){ left--; right++; }else{ break; } } if(right-left-1 > maxLen){ maxLen = right-left-1; result = s.substring(left+1,right); } } return result; }}
阅读全文
0 0
- (字符串操作)LeetCode#5. Longest Palindromic Substring
- Leetcode 5. Longest Palindromic Substring(字符串)
- [leetcode] 【字符串】 5. Longest Palindromic Substring
- LeetCode 5. Longest Palindromic Substring(字符串)
- leetcode---longest-palindromic-substring---字符串
- (Leetcode)5. Longest Palindromic Substring
- LeetCode 5. Longest Palindromic Substring(C++)
- LeetCode 5. Longest Palindromic Substring
- LeetCode --- 5. Longest Palindromic Substring
- LeetCode 5.Longest Palindromic Substring
- [Leetcode] 5. Longest Palindromic Substring
- [LeetCode]5.Longest Palindromic Substring
- [leetcode] 5. Longest Palindromic Substring
- LeetCode-5. Longest Palindromic Substring
- leetcode 5. Longest Palindromic Substring
- leetcode 5. Longest Palindromic Substring
- Leetcode 5. Longest Palindromic Substring
- LeetCode 5. Longest Palindromic Substring
- 观察者模式
- 医院建立呼叫中心的可行性
- IOS 视图生命周期
- Android面试系列之Android基础知识
- iOS攻防
- (字符串操作)LeetCode#5. Longest Palindromic Substring
- Swift 3.0 集成极光推送
- ajaxfileupload异步上传文件
- 前言
- BDLocationListener中更新UI出错分析
- 二进制文件查看其,看到的内容,解析,说明
- C/C++直接输出一个数据的十六进制、八进制和二进制
- HTML(5) 样式指南和代码约定
- 解决WordPress无法在线安装主题与插件