相对开音节

相对开音节构成的结构为辅音+元音(aeiou)+辅音(r除外)+e,常见的单词有bike、cake等。

给定一个字符串,以空格为分隔符,反转每个单词中的字母,若单词中包含如数字等其他非字母时不进行反转。
反转后计算其中含有相对开音节结构的子串个数(连续的子串中部分字符可以重复)。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class Main {

    //    a e i o u 第二个字符

//     b c d  f g h  j k l m n  p q r s t  v w x y z 第一个字符

//     b c d  f g h  j k l m n  p q s t  v w x y z 第三个字符

   static List<Character> firstChar = Arrays.asList('b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z');
    static List<Character> secondChar = Arrays.asList('a','e','i','o','u');
    static List<Character> thirdChar = Arrays.asList('b','c','d','f','g','h','j','k','l','m','n','p','q','s','t','v','w','x','y','z');

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();
        if (!(input.length() <10000)) {
            System.out.println(0);
        }
        String[] inputStrings = input.split(" ");
        List<String>  reverseStr = new ArrayList<>();
//        System.out.println(Arrays.toString(inputStrings));
        for (int i = 0; i< inputStrings.length; i++) {
            if (inputStrings[i].matches("[a-z]+")) {
                reverseStr.add(new StringBuilder(inputStrings[i]).reverse().toString());
            } else {
                reverseStr.add(inputStrings[i]);
            }
        }
//        System.out.println(reverseStr);
        int result = 0;
        for (String str : reverseStr) {
            if (str.length() < 4) {
                continue;
            }
            int index = str.indexOf('e');
            while (index > -1) {
                if (index < 3) {
                    index = str.indexOf('e',index + 1);
                    continue;
                }

                String needMatch = str.substring(index - 3, index + 1);
//                System.out.println(needMatch);
                if (isMatch(needMatch)) {
                    result++;
//                    System.out.println("needMatch:" + needMatch +", result:" + result);
                }
                index = str.indexOf('e',index + 1);
//                System.out.println("index:" + index);
            }
        }
        System.out.println(result);
    }
//a b c d e f g h i j k l m n o p q r s t u v w x y z

//    a e i o u 第二个字符

//     b c d  f g h  j k l m n  p q r s t  v w x y z 第一个字符

//     b c d  f g h  j k l m n  p q s t  v w x y z 第三个字符
    private static boolean isMatch(String needMatch) {
        char[] chars = needMatch.toCharArray();
        return firstChar.contains(chars[0]) && secondChar.contains(chars[1]) && thirdChar.contains(chars[2]);
    }
}


全部评论

相关推荐

06-02 15:53
阳光学院 Java
点赞 评论 收藏
分享
04-30 21:35
已编辑
长安大学 C++
晓沐咕咕咕:评论区没被女朋友好好对待过的计小将可真多。觉得可惜可以理解,毕竟一线大厂sp。但是骂楼主糊涂的大可不必,说什么会被社会毒打更是丢人。女朋友体制内生活有保障,读研女朋友还供着,都准备订婚了人家两情相悦,二线本地以后两口子日子美滋滋,哪轮到你一个一线城市房子都买不起的996清高计小将在这说人家傻😅
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务