c - 程序在字符串列表中查找重复字符串
问题描述
我正在尝试编写一个程序来比较用户输入的字符串。我已经可以找到最长的字符串和“max”(第一个不相等字符的最大 ASCII 码),但我不知道如何从列表中找到重复字符串的第一个实例。到目前为止,这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char words[50], max[50], longest[50], dupe[50];
int n, c, x, dupepos;
dupe[0] = '\0';
max[0] = '\0';
longest[0] = '\0';
scanf("%d", &n);
for(c = 0; c <= n; c++) {
fgets(words, 50, stdin);
x = strcmp(max, words);
if(strlen(words) > strlen(longest)) strcpy(longest, words);
if(x < 0) strcpy(max, words);
}
printf("Longest: %s", longest);
printf("Max: %s", max);
// if(dupe == 0) printf("UNIQUE (no dupes)\n");
// else printf("First dupe found at position %d: %s\n", dupepos, dupe);
return 0;
}
我注释掉了用于显示重复项的 if 语句,因为它目前不起作用。我可以使用数组对整数执行相同的程序,例如:
for(int c = 0; c < n; c++) {
scanf("%d", &num);
unique[num]++;
if(unique[num] > 1 && dupe == 0) dupe = num;
}
我基本上想对字符串列表做同样的事情。如果有更简单的方法来完成我的任务,那将受到欢迎!
如果测试文件如下所示:
7
The first line
fun
let x be 19
8 > 3
bracket
fun
Turkey
它应该输出这个:
Longest: The first line
Max: let x be 19
First dupe found at position 6: fun
如果测试文件如下所示:
5
The first line
let x be 19
8 > 3
{bracket}
turkey
它应该输出这个:
Longest: The first line
Max: {bracket}
UNIQUE (no dupes)
解决方案
推荐阅读
- command-line - 如何自动化此代码以从 txt 输入计算机名。列表?
- node.js - 如何告诉打字稿编译器不使用导出?
- javascript - 如何根据用户使用纯 JS 滚动来转换 div 位置?
- javascript - 在输入值之前,最大长度不会显示,并且在 Backspacing 之后它会减少到 31 个字符
- javascript - JS 中的 react prop 验证有问题
- caching - 清除多台服务器的缓存
- javascript - 仅在我的 HTML5 页面中需要时尝试使用 JS 游戏启动/触发 iframe
- stack-overflow - 使用 gp2c 时堆栈溢出,但在同一程序中直接使用 gp 时不会出现堆栈溢出 (PARI/GP)
- python - 在这个特定的例子中,python 导入是如何工作的
- spring - 带有 Pair 的 HashMap 在数据库中有一个奇怪的值