zoukankan      html  css  js  c++  java
  • 最长回文(通过比较原字符串和其翻转字符串)

    // zuichanghuiwen.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include<iostream>
    #include<string>
    #include<stack>
    using namespace std;
    
    void palindrome(string str)
    {
    	stack<char> sta;                           //翻转字符串
    	for (int i = 1; i < str.length(); i++)
    		sta.push(str[i]);
    	string str2(str.length(),'');
    	for (int i = 1; i < str.length(); i++)
    	{
    		str2[i] = sta.top();
    		sta.pop();
    	}
    
    	int m = str.length()-1;               //求愿字符串与翻转字符串的最长公共子序列
    	int n = str2.length()-1;
    	int c[20][20];
    	for (int i = 1; i <= m; i++)
    		c[i][0] = 0;
    	for (int j = 0; j <= n; j++)
    		c[0][j] = 0;
    	for(int i=1;i<=m;i++)
    		for(int j=1;j<=n;j++)
    			if (str[i] == str2[j]) {
    				c[i][j] = c[i - 1][j - 1]+1;
    			}
    			else
    				c[i][j] = 0;
    
    	int max = 0, maxi = 0,maxj=0;                             //重建最大子序列
    	for(int i=1;i<=m;i++)
    		for(int j=1;j<=n;j++)
    			if (c[i][j] > max) {
    				max = c[i][j];
    				maxi = i;
    				maxj = j;
    			}
    	for (int i = maxi - max + 1; i<= maxi; i++)
    		cout << str[i];
    }
    int main()
    {
    	string str("adhjgasddsa");
    	palindrome(str);
    	while (1);
        return 0;
    }
    

      

  • 相关阅读:
    visual sudio开发工具使用小技巧
    JS去除右边的逗号
    下拉标题
    sp_addextendedproperty
    触发器的使用
    缺失一个正数
    组合总和 去重
    拖动 Drag
    n皇后问题
    括号生成
  • 原文地址:https://www.cnblogs.com/linear/p/6638149.html
Copyright © 2011-2022 走看看