c_cpp 最长的字符串子序列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 最长的字符串子序列相关的知识,希望对你有一定的参考价值。

/*Given a string, find the longest subseqence of chars from string that conntains all vowels may be repeated 
but in a e i o u order*/
#include <bits/stdc++.h>
using namespace std;
int val(char c){
	if(c == 'a'){return 1;}
	if(c == 'e'){return 2;}
	if(c == 'i'){return 3;}
	if(c == 'o'){return 4;}
	if(c == 'u'){return 5;}
	return 0;
}
int ls(string s){
       if(s == ""){return 0;}
       int n = s.size();
       int dp[n];
       memset(dp,-1,sizeof(dp));
       if(val(s[0])){dp[0] = 1;}
       for(int i = 1;i < n;i++){
       	if(val(s[i])){
       	dp[i] = 1;
       	for(int j = 0;j< i;j++){
       		if(val(s[j]) && val(s[j]) <= val(s[i]) && dp[i] < dp[j] + 1){
       			dp[i] = dp[j] + 1;
       		}
       	}
       	}
       }
       for(int i = 0;i < n;i++){
       	cout << dp[i] << " ";
       }cout << endl;
       return dp[n - 1];
       
}
int main() {
    string s;
    cin >> s;
    cout << ls(s);
    
	return 0;
}

以上是关于c_cpp 最长的字符串子序列的主要内容,如果未能解决你的问题,请参考以下文章

子串子序列问题

dp求解各种子串子序列

两个字符串的所有公共最长子序列

使用 Python 的字符串子序列内核和 SVM

华为OD机试真题Java实现判断字符串子序列真题+解题思路+代码(2022&2023)

编程100%22-08 字符串子序列