洛谷-->P1321 单词覆盖还原-->遍历-入门

P1321 单词覆盖还原

P1321 单词覆盖还原 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目描述

一个长度为 l(3\le l\le255)l(3≤l≤255) 的字符串中被反复贴有 boy 和 girl 两单词,后贴上的可能覆盖已贴上的单词(没有被覆盖的用句点表示),最终每个单词至少有一个字符没有被覆盖。问贴有几个 boy 几个 girl?

输入格式

一行被被反复贴有boy和girl两单词的字符串。

输出格式

两行,两个整数。第一行为boy的个数,第二行为girl的个数。

输入输出样例

输入 #1

......boyogirlyy......girl.......

输出 #1

4
2

很简单的一道题,切入点在于:
1.可将原始字符串str视作“..........................”,即全为“.”,每次贴上一个“boy”或者一个“girl”;
2.若为“boy”,则查找str中有几个‘b’,有几个‘b’说明至少有几个“boy”;
2.1再判断是否为‘o’,若为‘o’且‘o’的前一个字符不为‘b’,则说明这是另一个被贴上去的“boy”;
2.2再判断是否为‘y’,若为‘y’且‘y’的前一个字符不为‘o’,则说明这是另一个被贴上去的“boy”;
3.判断“girl”同理
洛谷AC代码如下:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        String str=scanner.nextLine();
        char[] chars=str.toCharArray();
        int girlSum=0;
        int boySum=0;
        for (int i = 0; i < chars.length; i++) {
            if (chars[i]=='b'){
                boySum++;
            }else if (chars[i]=='o' && chars[i-1]!='b'){
                boySum++;
            }else if (chars[i]=='y' && chars[i-1]!='o'){
                boySum++;
            }else if (chars[i]=='g'){
                girlSum++;
            } else if(chars[i] == 'i' && chars[i-1] != 'g'){
                girlSum++;
            } else if(chars[i] == 'r' && chars[i-1] != 'i') {
                girlSum++;
            } else if(chars[i] == 'l' && chars[i-1] != 'r') {
                girlSum++;
            }
        }
        System.out.println(boySum);
        System.out.println(girlSum);
        Scanner.close();//关闭资源
    }
}

注:
由于第一次用洛谷,需要注意的是提交代码的类名需为Main(一开始用TestMain就报错了,若有误解请大佬们指教)

平平无奇小白程序媛一枚,欢迎各位大佬交流指教,如有不正确的地方,欢迎留言改正,谢谢!!!

上一篇:USACO2018 DEC (Gold) (dp,容斥+哈希,最短路)


下一篇:394. 字符串解码