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