【牛客练习赛59】A:小乔和小灰灰
作者:互联网
比赛地址:https://ac.nowcoder.com/acm/contest/4743/A
题目描述
小乔和小灰灰是好朋友,现在如果一个字符串中同时出现子序列“XiaoQiao”和“XiaoHuiHui”,那么小乔和小灰灰都会感到开心。
如"abc"的子序列有:“a"、“b”、“c”、“ab”、“ac”、“bc”、“abc”。
输入描述:
输入包含一行一个字符串S
字符串中仅包含大写字母和小写字母
输出描述:
如果这个串会让小乔和小灰灰都感到开心,那么输出“Happy”,否则输出“emm”。
示例1
XiaoQiaoheHuiHui Happy
示例2
Xiaohuihuihexiaoqiao emm
备注:
1<=∣S∣<=1000{1<=|S|<=1000}1<=∣S∣<=1000
∣S∣表示字符串S的长度。
题解一:indexOf()
1 public static void main(String[] args) { 2 String son1 = "XiaoQiao"; 3 String son2 ="XiaoHuiHui"; 4 Scanner sc = new Scanner(System.in); 5 while (sc.hasNext()) { 6 String str = sc.nextLine(); 7 boolean check1 = isSubsequence(son1, str); 8 boolean check2 = isSubsequence(son2, str); 9 if(check1&&check2){ 10 System.out.println("Happy"); 11 }else { 12 System.out.println("emm"); 13 } 14 } 15 } 16 //indexOf(char c,int m)意思是从第m位置开始寻找该索引,找到则返回该索引,否则返回-1 17 public static boolean isSubsequence(String son, String str) { 18 int index = -1; 19 for (char c : son.toCharArray()) { 20 //返回第一次出现的指定子字符串在此字符串中的索引 21 index = str.indexOf(c, index + 1); 22 if (index == -1) 23 return false; 24 } 25 return true; 26 }
题解二:循环遍历
1 public static void main01() { 2 Scanner sc=new Scanner(System.in); 3 String s=sc.next(); 4 String s1="XiaoQiao"; 5 String s2="XiaoHuiHui"; 6 int a=0,b=0; 7 for (int i = 0; i <s.length(); i++) { 8 char c=s.charAt(i); 9 if(c==s1.charAt(a)) { 10 a++; 11 } 12 if(c==s2.charAt(b)) { 13 b++; 14 } 15 } 16 if(a==8&&b==10) { 17 System.out.println("Happy"); 18 }else { 19 System.out.println("emm"); 20 } 21 }
经验:
需要搞清楚父子关系,输入的是父串,而且两个子串的顺序不能改变
标签:灰灰,练习赛,String,牛客,字符串,str,sc,Scanner 来源: https://www.cnblogs.com/Blog-cpc/p/12492490.html