您将获得一个由小写英文字母组成的字符串 和/或'_'(下划线)。你必须更换所有下划线(如果有的话) 字符串中有元音。
您遵循的规则是:每个下划线都可以替换为任何一个 在它之前的元音。
您必须告诉我们可以生成的不同字符串的总数 遵循上述规则。
我的代码在某些输入上输出错误
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
class TestClass {
public static void main(String args[] ) throws Exception {
Scanner sc = new Scanner(System.in);
String test = sc.nextLine();
int a=0,e=0,i1=0,o=0,u=0;
int ans = 1;
for(int j=0;j<Integer.parseInt(test);j++){
String s = sc.nextLine();
// System.out.println(s);
for(int i=0;i<s.length();i++){
if( s.charAt(i)=='a' || s.charAt(i)=='o' || s.charAt(i)=='i' || s.charAt(i)=='e' || s.charAt(i)=='u' ) {
if(s.charAt(i)=='a')
a=1;
else if(s.charAt(i)=='e')
e=1;
else if(s.charAt(i)=='i')
i1=1;
else if(s.charAt(i)=='o')
o=1;
else if(s.charAt(i)=='u')
u=1;
}
else if(s.charAt(i)=='_'){
int sum = a + e +i1 +o + u;
if(sum != 0)
ans = ans * sum;
}
}
if(ans!=0)
System.out.println(ans);
else
System.out.println(1);
ans = 1;
a=0;
e=0;
i1=0;
o=0;
u=0;
}
}
}
答案 0 :(得分:0)
迭代字符串并保持元音的数量
一旦遇到下划线,将元音的数量乘以总和。
int sum = 1, noOfVowels = 0;
for(int i=0; i<str.length(); i++) {
if("aeiou".indexOf(str.charAt(i)) >= 0) {
noOfVowels++;
} else if("_".indexOf(str.charAt(i)) >= 0) {
sum = (sum * noOfVowels <= 0) ? 1: sum * noOfVowels;
}
}
return sum;
输入:a_e_i
输出:2(aAeAi,aAeEi)
输入:ae_io_
输出:8 (aeAioA,aeAioE,aeEioA,aeEioE,aeAioI,aeAioO,aeEioI,aeEioO)