校验输入的拼音是否符合声母韵母搭配规则(不是根据汉字生成拼音)

17 篇文章 1 订阅

首发地址

搭配表

根据搭配表暴力生成所有拼音组合

std::vector<std::string> TABLE = []()
{
    std::vector<std::string> master{"", "b", "p", "m", "f", "d", "t", "n", "l", "g", "k", "h", "j", "q", "x", "z", "c", "s", "zh", "ch", "sh", "r", "y", "w"};
    std::vector<std::string> slave{"a", "o", "e", "i", "u", "u", "ai", "ao", "an", "ang", "ou", "ong", "ei", "er", "en", "eng", "iu", "ie", "in", "ing", "ia", "iao", "ian", "iang", "iong", "ui", "un", "ua", "uai", "uan", "uang", "uo", "ue"};
    std::vector<std::string> table(33, "");
    table[0] = "111111111111000111111011";
    table[1] = "111110000000000000000011";
    table[2] = "100101111111000111111110";
    table[3] = "011101111000111111111110";
    table[4] = "011111111111000111111101";
    table[5] = "000000000000111000000010";
    table[6] = "111101111111000111111001";
    table[7] = "111101111111000111111110";
    table[8] = "111111111111000111111111";
    table[9] = "111111111111000111111111";
    table[10] = "101111111111000111111110";
    table[11] = "000001111111000111110110";
    table[12] = "111111111111000110101001";
    table[13] = "100000000000000000000000";
    table[14] = "111111010111000111111101";
    table[15] = "111111111111000111111101";
    table[16] = "000101011000111000000000";
    table[17] = "011101111000111000000000";
    table[18] = "011100011000111000000010";
    table[19] = "011101111000111000000010";
    table[20] = "000001001000111000000000";
    table[21] = "011101111000111000000000";
    table[22] = "011101111000111000000000";
    table[23] = "000000011000111000000000";
    table[24] = "000000000000111000000000";
    table[25] = "000001100111000111111100";
    table[26] = "000001111111111111111100";
    table[27] = "000000000111000000111100";
    table[28] = "000000000111000000111000";
    table[29] = "000001111111111111111110";
    table[30] = "000000000111000000111000";
    table[31] = "000001111111000111111100";
    table[32] = "000000011000111000000010";

    std::vector<std::string> rs_table;

    for (int i = 0; i < 33; ++i)
    {
        for (int j = 0; j < 24; ++j)
        {
            if (table[i][j] == '1')
            {
                rs_table.emplace_back(master[j] + slave[i]);
            }
        }
    }
    return rs_table;
}();

检查拼音是否存在

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值