Longest Palindromic Substring 找最长的回文子字符串
2018-01-11 16:58
323 查看
所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的。比如"level" 、 “aaabbaaa”
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.
Example:
Example:
个人(菜鸟)思路:
两个for循环,外层i从左向右,内层j右向左。如果s[i]==s[j],遍历i->j,是回文字符串就记录下来,不是的话继续j--。
C:
char* longestPalindrome(char* s) {
int maxlength = 0,length,temp = 1;
int i = 0,j = 0,x = 0,k = 0;
int i_flag = 0,j_flag = 0,flag;
while(s[i] != NULL){
i++;
}
length = i;
for(i = 0 ;i < length; i++){
for(j = length - 1;j > i; ){
if(s[i] == s[j]){
flag = true;
x = i;
k = j;
while(x <= k){
if(s[x] != s[k])
flag = false;
x++;
k--;
}
if(flag == true){
if(maxlength < (j - i + 1)){
i_flag = i;
j_flag = j;
maxlength = (j - i + 1);
}
break;
} else{
j--;
}
}else{
j--;
}
}
}
if(maxlength == 0){
char *non_result = (char *)malloc(sizeof(char));
non_result[0] = s[0];
return non_result;
}else{
if(maxlength == length)
return s;
else{
char *result = (char *)malloc(sizeof(char)* (j_flag - i_flag + 1));
for(i = i_flag, j = 0; i <= j_flag ; i++,j++){
result[j] = s[i];
}
result[j] = '\0';
return result;
}
}
}
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.
Example:
Input: "babad" Output: "bab" Note: "aba" is also a valid answer.
Example:
Input: "cbbd" Output: "bb"
个人(菜鸟)思路:
两个for循环,外层i从左向右,内层j右向左。如果s[i]==s[j],遍历i->j,是回文字符串就记录下来,不是的话继续j--。
C:
char* longestPalindrome(char* s) {
int maxlength = 0,length,temp = 1;
int i = 0,j = 0,x = 0,k = 0;
int i_flag = 0,j_flag = 0,flag;
while(s[i] != NULL){
i++;
}
length = i;
for(i = 0 ;i < length; i++){
for(j = length - 1;j > i; ){
if(s[i] == s[j]){
flag = true;
x = i;
k = j;
while(x <= k){
if(s[x] != s[k])
flag = false;
x++;
k--;
}
if(flag == true){
if(maxlength < (j - i + 1)){
i_flag = i;
j_flag = j;
maxlength = (j - i + 1);
}
break;
} else{
j--;
}
}else{
j--;
}
}
}
if(maxlength == 0){
char *non_result = (char *)malloc(sizeof(char));
non_result[0] = s[0];
return non_result;
}else{
if(maxlength == length)
return s;
else{
char *result = (char *)malloc(sizeof(char)* (j_flag - i_flag + 1));
for(i = i_flag, j = 0; i <= j_flag ; i++,j++){
result[j] = s[i];
}
result[j] = '\0';
return result;
}
}
}
相关文章推荐
- Longest Palindromic Substring(最长回文子字符串)
- 【LeetCode】005 Longest Palindromic Substring 最长的回文子字符串
- LeetCode Longest Palindromic Substring 最长回文子字符串 两种方法分析解答
- 最长回文子字符串(Longest Palindromic Substring)
- 5. Longest Palindromic Substring(求最长回文子字符串)
- LintCode : 最长回文子字符串 Longest Palindromic Substring
- Longest Palindromic Substring最长回文字符串算法
- (leetcode)5.最大回文子字符串 Longest Palindromic Substring--Java
- 最长回文子序列 Longest Palindromic Substring
- LeetCode 5 Longest Palindromic Substring(最大回文子字符串)
- 查找字符串中的最长回文 (Longest Palindromic Substring)
- java Longest Palindromic Substring(最长回文字符串)
- Java Longest Palindromic Substring(最长回文字符串)
- Longest Palindromic Substring (最大回文子字符串)
- leetcode 5 Longest Palindromic Substring--最长回文字符串
- 【字符串】最长回文子串Longest Palindromic Substring
- leetcode 5 Longest Palindromic Substring--最长回文字符串
- 动态规划求一个序列的最长回文子序列(Longest Palindromic Substring )
- Leetcode--Longest Palindromic Substring(最长回文子序列)
- Longest Palindromic Substring 在一个字符串里找最长回文子串@LeetCode