【发布时间】:2020-06-16 22:37:24
【问题描述】:
Python 代码:
arr = list(input().split(' '))
print("no" if len([x for x in arr if arr.count(x) > 1]) else "yes")
我做了这个 C#,但它不断循环是和否。
String word = Console.ReadLine();
int count;
word = word.ToLower();
String[] words = word.Split(' ');
for(int i = 0; i < words.Length; i++)
{
count = 1;
for(int j = i+1; j < words.Length; j++)
{
if(count > 1 && words[i] != "")
{
Console.WriteLine("no");
}else
{
Console.WriteLine("yes");
}
}
}
【问题讨论】:
-
请问原来的问题是什么?
-
这段代码有什么作用?搜索重复项?
word.ToLower().Split(' ').GroupBy(x=>x).Any(g=>g.Count()>1)将返回 true 如果有任何单词出现不止一次。它通过对单词进行分组,然后计算每个组的项目来做到这一点。 -
目标到底是什么?我们可以看到 Python 代码确实只打印了一次,而 C# 代码打印了多次,因为它处于循环中。
-
如果没有单词重复,则输出为“yes”,如果有一个或多个单词重复,则输出为“no”。它在插入的字符串中搜索重复的单词。 @DmitryBychenko
-
@SomeStudent Python 也循环了两次。一次是由于
for,一次是由于arr.count(x),N^2 复杂度