笑脸组成规则:
-笑脸必须包含眼睛。用“:”或“;”表示。
-笑脸可以有鼻子,也可以没有。用“-”或“~”表示。
-笑脸必须有嘴巴。用“)”或“D”表示。
例如笑脸:
:) ;) :~) ;~) :-) ;-) :D ;D等
Given an array (arr) as an argument complete the function countSmileys that should return the total number of smiling faces.
Rules for a smiling face:
-Each smiley face must contain a valid pair of eyes. Eyes can be marked as : or ;
-A smiley face can have a nose but it does not have to. Valid characters for a nose are - or ~
-Every smiling face must have a smiling mouth that should be marked with either ) or D.
No additional characters are allowed except for those mentioned.
Valid smiley face examples:
:) ;) :~) ;~) :-) ;-) :D ;D :-D ;-D :~D ;~D
Invalid smiley faces:
;( :> :} :]
代码:
import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * @description: * @create: 2019/04/24 09:03 */ public class SmileFaces { public static int countSmileys(List<String> arr) { List<String> list=new ArrayList<>(); list.add(":)"); list.add(";)"); list.add(":~)"); list.add(";~)"); list.add(":-)"); list.add(";-)"); list.add(":D"); list.add(";D"); list.add(":-D"); list.add(";-D"); list.add(":~D"); list.add(";~D"); Integer count=0; //方式一 for(String str:arr){ if(list.contains(str)){ ++count; } } //方式二,效率比较低,不推荐 // for(int i=0;i<list.size();i++){ // for(int k=0;k<arr.size();k++){ // if(list.get(i).equals(arr.get(k))){ // ++count; // } // } // } return count; } public static void main(String[] args) { List<String> arr=new ArrayList<>(); arr.add("~8oD"); arr.add(":d"); arr.add("~(~d"); arr.add(":p"); arr.add(":D"); arr.add(";)"); arr.add("'d"); arr.add("(P"); arr.add(";x"); arr.add(";DD"); arr.add(";)"); arr.add("-p)"); arr.add("p-)"); arr.add("(x)"); arr.add("(-P"); arr.add(":p)D"); arr.add(";)"); arr.add("4x"); arr.add("4x"); arr.add(":~D"); arr.add("o8d"); arr.add(";)"); arr.add(" '8D"); arr.add("oD"); arr.add(";x)"); arr.add(";P"); arr.add(";X"); arr.add(":2D"); System.out.println(countSmileys(arr)); } }