CodeChef:文本中的洞

时间:2016-01-12 13:47:01

标签: java

我正在处理以下CodeChef question

  

厨师在一张纸上写了一些文字,现在他想知道如何   文中有很多漏洞。什么是洞?如果你想到这篇论文   作为平面和一个字母作为平面上的曲线,然后每个字母   将飞机划分为区域。例如字母" A"," D"," O",   " P"," R"把飞机分成两个区域,所以我们说这些字母   每个都有一个洞。同样,字母" B"有两个洞和字母   例如" C"," E"," F"," K"没有洞。我们说的数量   文本中的孔等于字母中的孔总数   的文字。帮助Chef确定文本中有多少个孔。

     

输入

     

第一行包含单个整数T <= 40,测试次数   案例。 T测试案例如下。每个测试用例的唯一一行包含一个   非空文本仅由英文字母的大写字母组成。   文本的长度小于100.没有任何空格   输入。

     

输出

     

对于每个测试用例,输出包含数字的单行   相应文字中的洞。

     

示例

     

输入:
  2
  CODECHEF
  DRINKEATCODE

     

输出:
  2
  5

我提交以下代码,但法官一直显示错误答案(WA)。有什么建议吗?

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

class test {
    static short[] srr=new short[41];

    public static short getHoles(String st){
        short holes=0;
        for (int i = 0; i < st.length(); i++) {
            char c= st.charAt(i);
            if(c=='A') holes++;

            if(c=='D') holes++;

            if(c=='P') holes++;

            if(c=='O') holes++;

            if(c=='R') holes++;

            if(c=='Q') holes++;

            if(c=='B'){
                holes++;
                holes++;
            }
        }

        return holes;
    }

    public static void main(String[] args) throws IOException {
        BufferedReader s = new BufferedReader(new InputStreamReader(System.in));
        short cases;
        String stt= s.readLine();
        cases=Short.parseShort(stt);
        String temp;
        short t;
        for (int i = 0; i < cases; i++) {
            temp=s.readLine();
            t = getHoles(temp);
            srr[i]=t;
        }

        for (int i = 0; i< 45; i++) {
            if(srr[i]==0) break;
            System.out.println(srr[i]); 
        }

    }
}

3 个答案:

答案 0 :(得分:1)

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    public class Letter {
    
        public static void main(String[] args) throws NumberFormatException, IOException {
            // TODO Auto-generated method stub
            InputStreamReader is= new InputStreamReader(System.in);
            BufferedReader br= new BufferedReader(is);
            int n= Integer.parseInt(br.readLine());
            for(int i=0;i<n;i++) {
                int holes=0;
                String s= br.readLine();
                char[] ch= s.toCharArray();
                for(int j=0;j<ch.length;j++) {
                    
                    if(ch[j]=='A'||ch[j]=='D'||ch[j]=='O'||ch[j]=='Q'||ch[j]=='P'||ch[j]=='R') {
                        holes= holes+1;
                    }
                    else if(ch[j]=='B') {
                        holes=holes+2;  
                    }
                    else {
                        holes=holes+0;
                    }
                }
            System.out.println(holes);  
            }
            }
    }

答案 1 :(得分:0)

在这部分

$scope.apply()

如果你的单词有0个洞,你就不会说0。

试试这个

$(window).scroll(function (event) {
    var scroll = $(window).scrollTop();
    console.log(scroll);
    if(scroll>500 || scroll==undefined){
        $scope.showUpArrow = false;
    }else{
        $scope.showUpArrow = true;
    }
    $scope.$apply();
});

答案 2 :(得分:0)

for (int i = 0; i< 45; i++) {
    if(srr[i]==0) break;
    System.out.println(srr[i]);

}

对于零孔的输入字符串,您将离开for循环。 输入

2
EEEE
CODECHEF

什么都不打印。
由于除了主要内容之外,您不能在任何地方使用srr,因此您可以移除静态并将其放入主方法中。
cases表示srr需要多大,以便您可以使用它初始化srr并将for循环更改为

for (int i = 0; i< cases; i++) {
    System.out.println(srr[i]);
}