用字符串中的元音替换所有下划线(如果有)

时间:2017-12-10 11:02:42

标签: java string

  

您将获得一个由小写英文字母组成的字符串   和/或'_'(下划线)。你必须更换所有下划线(如果有的话)   字符串中有元音。

     

您遵循的规则是:每个下划线都可以替换为任何一个   在它之前的元音。

     

您必须告诉我们可以生成的不同字符串的总数   遵循上述规则。

我的代码在某些输入上输出错误

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;
        }

    }
}

1 个答案:

答案 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)