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就报错了,若有误解请大佬们指教)
平平无奇小白程序媛一枚,欢迎各位大佬交流指教,如有不正确的地方,欢迎留言改正,谢谢!!!