gpt4 book ai didi

c# - 反转和删除句子中的重复项

转载 作者:可可西里 更新时间:2023-11-01 08:18:00 25 4
gpt4 key购买 nike

我正在准备一道面试题。其中一道题目是复述一句话。比如“its a awesome day”到“day awesome a its”。之后,他们问是否有重复,你能去掉重复吗,比如“我很好,他好吗”到“他好,我好吗” .

为了反转句子我写了下面的方法

public static string reversesentence(string one)
{
StringBuilder builder = new StringBuilder();

string[] split = one.Split(' ');
for (int i = split.Length-1; i >= 0; i--)
{

builder.Append(split[i]);
builder.Append(" ");
}
return builder.ToString();

}

但是我没有关于删除重复的想法。我可以在这里得到一些帮助吗。

最佳答案

这个有效:

public static string reversesentence(string one)
{
Regex reg = new Regex("\\w+");
bool isFirst = true;
var usedWords = new HashSet<String>(StringComparer.InvariantCultureIgnoreCase);
return String.Join("", one.Split(' ').Reverse().Select((w => {
var trimmedWord = reg.Match(w).Value;
if (trimmedWord != null) {
var wasFirst = isFirst;
isFirst = false;

if (usedWords.Contains(trimmedWord)) //Is it duplicate?
return w.Replace(trimmedWord, ""); //Remove the duplicate phrase but keep punctuation

usedWords.Add(trimmedWord);

if (!wasFirst) //If it's the first word, don't add a leading space
return " " + w;
return w;
}
return null;
})));
}

基本上,我们根据没有标点符号的单词来判断它是否不同。如果它已经存在,只需返回标点符号。如果不存在,打印出整个单词,包括标点符号。

标点符号还删除了示例中的空格,这就是为什么我们不能只执行 String.Join("", ...) (否则结果将是 good he Is, am I 而不是 good he Is, am I

测试:

reversesentence("我好,他好吗").Dump();

结果:

他好,我好

关于c# - 反转和删除句子中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31420804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com