加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何打印出元音最多的单词

发布时间:2020-12-16 01:28:05 所属栏目:百科 来源:网络整理
导读:我得到了一个代码,它在一行中找到一个至少有3个不同元音的单词.问题是我不知道为什么它会超出范围. static string findword(string e){ char[] vowels = { 'a','e','i','o','u' }; char[] sk = { ' ','.',','!','?',':',';','(',')','t' }; string word= ""
我得到了一个代码,它在一行中找到一个至少有3个不同元音的单词.问题是我不知道为什么它会超出范围.

static string findword(string e)
{
    char[] vowels = { 'a','e','i','o','u' };
    char[] sk = { ' ','.',','!','?',':',';','(',')','t' };
     string word= "";
    string[] parts = e.Split(sk,StringSplitOptions.RemoveEmptyEntries);
        for (int i = 0; i < e.Length; i++)
        {
            if (parts[i].IndexOf(vowels[i]) >= 3)
            {
                word = parts[i];
            }
        }
    return word;
}

因此,对于e =“我今天要回家”它应该返回“今天”.

解决方法

这是我的版本:

var e = "I was going home today";

        char[] vowels = { 'a','u' };
        char[] sk = { ' ','t' };
        string word = "";
        string[] parts = e.Split(sk,StringSplitOptions.RemoveEmptyEntries);
        var mostVowels = 0;

        for (int i = 0; i < parts.Length; i++)
        {
            var part = parts[i];
            var numberOfVowels = 0;
            foreach (var vowel in vowels)
            {
                if (part.Contains(vowel)) numberOfVowels++;
            }

            if (mostVowels < numberOfVowels)
            {
                mostVowels = i;
                word = part;
            }
        }
        return(word);

它遍历各个部分,然后另一个循环检查该部分是否包含每个元音.然后它检查这个单词是否优于以前的最佳单词.

请注意,这会返回’going’,因为它是带有两个元音的第一个单词.

另请注意,我使用’foreach’而不是正常for循环,这有助于避免许多常见错误.

这段代码可能更好,因为它只查找每个元音一次.像’Aardvark’这样的单词只会得1分.毫无疑问,使用LINQ和正则表达式这是一种非常简洁的方法,但希望这可以帮助你了解你的循环和数组出错的地方.

编辑:这是一个正则表达式& LINQ版本适合您:

var r = new Regex("(a|e|i|o|u)");
    var mostVowels = parts.Max(y => r.Matches(y).Count);
    var result = parts.First(x => r.Matches(x).Count == mostVowels);

正则表达式是寻找元音的助手.第一个查询计算每个单词中的元音数量并返回最大值.第二个用元音找到第一个单词.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读