Java 编写一个接受1个参数的函数:一个字符串,s。它必须返回一个整数,表示s?中最长魔法子序列的长度?
考虑一个字符串s,由以下一个或多个字母组成:a、e、i、o和u 我们将s的神奇子序列定义为从s派生的字母序列,其中按顺序包含所有五个元音。这意味着一个神奇的子序列将有一个或多个a,后跟一个或多个e,后跟一个或多个i,后跟一个或多个o,后跟一个或多个u。例如,如果s=“aeeiooua”,则“aeiou”和“aeeioou”是神奇的子序列,而“aeio”和“AEEIOOA”则不是 编写一个函数,用参数字符串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
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您能告诉我这个问题是从哪里来的吗?我需要知道谢谢你,伙计。你是怎么做到的@_@