c - C 中查找元音计数的字符串

标签 c string

我需要将“n”个字符串作为输入来查找哪个字符串具有更多元音。(采用n个字符串)。尝试了字符串数组但失败了。任何帮助!

最佳答案

当问题涉及“n 个输入”而没有明确指示最大数量时,您应该问自己两件事:

1) 我需要保留整个列表才能执行任务吗?

2)如果我需要保留整个列表,我有什么性能限制?

在您给出的示例中,听起来您不需要保留整个列表来执行任务 - 没有人要求您在任何时候显示整个列表,只是为了跟踪带有列表末尾的大多数元音。

听起来您应该有两个字符串 - 您正在评估的一个和当前最高的一个。

您想要执行的操作的伪代码听起来像这样:

highest_vowels = -1
while there are still more strings to evaluate
{
    eval_string = next string to evaluate
    eval_vowels = number of vowels in eval_string
    if eval_vowels > highest_vowels
    {
       highest_string = eval_string
       highest_vowels = eval_vowels
    }
}
if highest_vowels == -1
{
    Print "There were no strings to evaluate"
}
else
{
    Print "The string with the most vowels was: " + highest_string
}

在此示例中,您没有跟踪您评估的每个字符串。您只跟踪两个字符串:当前正在评估的字符串和当前被识别为元音“最高”的字符串。无论给我一个字符串还是一百万个字符串,我的代码最终都会找到最高的那个。

如果我们被要求跟踪整个过程的列表,虽然这会使事情变得复杂,但有比列表更高级的数据结构非常适合于此。这种数据结构的一个例子是链表。要明白,在这些数据结构之间做出选择很大程度上取决于我们对于给定任务(问题 2)所能承受的性能限制。

关于c - C 中查找元音计数的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25375762/

相关文章:

我可以让 ungetc 取消阻止阻塞的 fgetc 调用吗?

vb.net - 搜索特殊字符(例如accute等)的变体时比较字符串

c++:将其所有参数连接为字符串的函数

c# - 将 DateTime 转换为格式为 YYYYMMDD 的字符串

c - 重定向在 shell::ls 中不起作用:无法访问 >: 没有这样的文件或目录

C - 无法向前迭代第二个字符串

c - Malloced 指针在返回时更改值

c - 将文件的行逐字符读取到 char** 数组中

python - 字符串到 np.matrix 返回字符串

c++ - 我可以在 Vista 和 Windows 7 下以用户模式获得对原始磁盘扇区的写访问权限吗?