【发布时间】:2015-07-15 13:17:20
【问题描述】:
我正在准备一个面试问题。其中一个问题是还原一个句子。比如“今天真棒”到“今天真棒”。之后,他们问是否有重复,你能把重复的“我很好,他好吗”去掉“他很好,我好吗”这样的重复.
为了反转句子我写了以下方法
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();
}
但是我没有关于删除重复的想法。我可以在这里获得一些帮助吗?
【问题讨论】:
-
你可以使用字符串操作
-
好吧,一种天真的方法可能是检查
split[i]是否在split[i+1]到split[split.Length -1]之间发生过,我猜! -
使用某种散列也很有帮助。使用单词作为键并将其赋值为 1。同一个单词出现多次只会将 1 赋值给现有值。我不知道如何在 C# 中做到这一点,但我一直在 Perl 中做到这一点。
-
注意标点符号。您的代码可能不会以第二个示例显示的方式处理逗号(尽管没有删除重复项)。
标签: c#