zoukankan      html  css  js  c++  java
  • 构造回文

    构造回文

    给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? 输出需要删除的字符个数。
    输入描述:
    输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.
    输出描述:
    对于每组数据,输出一个整数,代表最少需要删除的字符个数。

    输入例子:
    abcda
    google
    输出例子:
    2
    2
    给出c++代码:

    #include <iostream>
    #include <string>
    #include <algorithm>
    using namespace std;
    int LCS(const string &str1,const string &str2) {
    if (str1 == "" || str2 == "") 
    return 0;
    else 
    if (str1.back() == str2.back())
    return LCS(str1.substr(0, str1.size() - 1), str2.substr(0, str2.size() - 1)) + 1;
    else
    return max(LCS(str1.substr(0, str1.size() - 1), str2.substr(0, str2.size())), LCS(str1.substr(0, str1.size()), str2.substr(0, str2.size() - 1)));
    
    }
    int main() {
    string str1;
    while (getline(cin,str1)) {
    string str2(str1);
    reverse(str1.begin(), str1.end());
    cout<<str1.length()-LCS(str1, str2);
    }
    return 0;
    }
    
  • 相关阅读:
    JavaScript基础语法及字符串相关方法(1)
    matplotlib实现三维柱状图
    前端入门CSS(3)
    博客页面练习
    前端入门CSS(2)
    前端入门CSS(1)
    前端入门html(表单)
    Longest Palindromic Substring
    Wildcard Matching
    Spiral Matrix II
  • 原文地址:https://www.cnblogs.com/whaohe/p/6821455.html
Copyright © 2011-2022 走看看