You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中如何不使用内置方法实现获取字符串未包含的元音?

实现方案

核心思路

完全通过双层循环实现对比逻辑,不需要借助minus或其他集合内置操作方法:

  1. 定义基础元音列表和待检测的输入字符串
  2. 逐个遍历每一个元音字母
  3. 针对当前遍历的元音,再遍历输入字符串的所有字符,判断该元音是否在字符串中出现
  4. 如果遍历完整个字符串都没找到对应元音,就把这个元音加入结果列表
  5. 最后输出结果列表即可

代码实现

fun main() {
    val line = "ankit"
    val vowels = listOf('a', 'e', 'i', 'o', 'u')
    val remainingVowels = mutableListOf<Char>()

    // 遍历所有元音逐个校验
    for (vowel in vowels) {
        var isContained = false
        // 循环对比输入字符串的每个字符,判断当前元音是否存在
        for (c in line) {
            if (c == vowel) {
                isContained = true
                // 匹配到后提前跳出内层循环,减少不必要的遍历
                break
            }
        }
        // 元音未在字符串中出现就加入结果
        if (!isContained) {
            remainingVowels.add(vowel)
        }
    }

    println(remainingVowels)
}

上述代码针对输入ankit最终会输出[e, o, u],和你原有逻辑的运行结果完全一致。

如果你想沿用原有先收集字符串包含的元音、再对比求差的写法,也可以用如下循环逻辑实现:

fun main() {
    val line = "ankit"
    val containedVowel = mutableListOf<Char>()
    val vowels = listOf('a', 'e', 'i', 'o', 'u')

    for (c in line.toCharArray()) {
        when (c) {
            'a', 'e', 'i', 'o', 'u' -> containedVowel.add(c)
        }
    }

    val remainingVowels = mutableListOf<Char>()
    // 循环对比元音列表和已收集的包含元音列表
    for (vowel in vowels) {
        var exist = false
        for (contained in containedVowel) {
            if (vowel == contained) {
                exist = true
                break
            }
        }
        if (!exist) {
            remainingVowels.add(vowel)
        }
    }

    println(remainingVowels)
}

内容的提问来源于stack exchange,提问作者Abhas Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 13:36:03