Java 编写一个接受1个参数的函数:一个字符串,s。它必须返回一个整数,表示s?中最长魔法子序列的长度?

Java 编写一个接受1个参数的函数:一个字符串,s。它必须返回一个整数,表示s?中最长魔法子序列的长度?,java,python,Java,Python,考虑一个字符串s,由以下一个或多个字母组成:a、e、i、o和u 我们将s的神奇子序列定义为从s派生的字母序列,其中按顺序包含所有五个元音。这意味着一个神奇的子序列将有一个或多个a,后跟一个或多个e,后跟一个或多个i,后跟一个或多个o,后跟一个或多个u。例如,如果s=“aeeiooua”,则“aeiou”和“aeeioou”是神奇的子序列,而“aeio”和“AEEIOOA”则不是 编写一个函数,用参数字符串s查找最长子序列的长度 Input Format String s composed of

考虑一个字符串s,由以下一个或多个字母组成:a、e、i、o和u

我们将s的神奇子序列定义为从s派生的字母序列,其中按顺序包含所有五个元音。这意味着一个神奇的子序列将有一个或多个a,后跟一个或多个e,后跟一个或多个i,后跟一个或多个o,后跟一个或多个u。例如,如果s=“aeeiooua”,则“aeiou”和“aeeioou”是神奇的子序列,而“aeio”和“AEEIOOA”则不是

编写一个函数,用参数字符串s查找最长子序列的长度

Input Format
String s composed of English vowels (i.e., a, e, i, o, and u).

Output Format
Count denoting the length of the longest magical subsequence in s.


    Sample Input 1
    aeiaaioooaauuaeiou



Sample Output 1
10

Explanation 1
In the table below, the component characters of the longest magical subsequence are red:
a   e   i   a   a   i   o   o   o   a   a   u   u   a   e   i   o   u

Sample Input 2
aeiaaioooaa

Sample Output 2
0

Explanation 2
String s does not contain the letter u, so it is not possible to construct a magical subsequence

I
这个问题的java代码是这样的

import java.util.Arrays; import java.util.Scanner;
public class LongestMegicalSubsequence {
static int longestMegicalSubsequence(String s, char[] c) {

    // exit conditions
    if (s.length() == 0 || c.length == 0) {
        return 0;
    }

    if (s.length() < c.length) {
        return 0;
    }

    if (s.length() == c.length) {
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) != c[i]) {
                return 0;
            }
        }
        return s.length();
    }

    if (s.charAt(0) < c[0]) {
        // ignore, go ahead with next item
        return longestMegicalSubsequence(s.substring(1), c);
    } else if (s.charAt(0) == c[0]) {

        return Math.max(Math.max(
                (1 + longestMegicalSubsequence(s.substring(1),
                        Arrays.copyOfRange(c, 1, c.length))),
                (1 + longestMegicalSubsequence(s.substring(1), c))),
                (longestMegicalSubsequence(s.substring(1), c)));
    } else {
        return longestMegicalSubsequence(s.substring(1), c);
    }
}

public static void main(String...s) {

    char[] chars = { 'a', 'e', 'i', 'o', 'u' };
    System.out.print("PLEASE ENTER THE STRING");
    Scanner sc =new Scanner(System.in);

    String str = sc.next();

    System.out.println(longestMegicalSubsequence(str, chars));


}
}
导入java.util.array;导入java.util.Scanner;
公共类longestmagicalsubsequence{
静态int longestmagicalsubsequence(字符串s,字符[]c){
//退出条件
如果(s.length()==0 | | c.length==0){
返回0;
}
如果(s.长度()
我只是想用python来解决这个问题

但是我想不出一个像蟒蛇一样的方法。我的意思是我转换python代码中的每一行逻辑,但这不是我的动机。你们能给我推荐一种用python实现的方法吗。

这是一个python版本

def f(input):
    pattern='aeiou'
    total=0
    c=0
    for x in input:
        if x==pattern[c]:
            c+=1
            if c==5:
                total += 5
                c=0
    return total
正文:

In [12]: f('aeiaaioooaauuaeiou')
10
或者,更精确地说:

def f(input):
    pattern='aeiou'
    c=0
    for x in input:
        c += (x==pattern[c%5])
    print(c//5*5)

是:忘记Java版本,将规范作为测试用例编写,然后根据测试编写Python代码。说真的,你希望得到什么样的回答?我不清楚你到底在问什么。您不想用Java解决这个问题,但也不想将代码转换为Python?嗯?@timgeb。我只想把它转换成python。但是使用一些库可以缩短代码长度。不仅仅是跟随每一行java代码并将其转换回python。@Techno_Stud您能告诉我这个问题是从哪里来的吗?我需要知道谢谢你,伙计。你是怎么做到的@_@