我正在使用visual c#编写一个匹配单词列表中单词的程序。我需要将字符串的字母与另一个字符串匹配,如果它满足,那么我将选择那些。
即: 第一个例子: 第一串:“LANE” 第二个字符串:“CLEAN”
第二个例子: 第一串:“AGED” 第二个字符串:“CAGED”
第3个例子: 第一串:“AGED” 第二个字符串:“RAGE”
第4个例子: 第一串:“取消” 第二个字符串:“CONCEAL”
对我来说,第一和第二个例子都应该是真实的。但第三个应该是假的。
到目前为止我能做的是我可以使用string.contains()方法返回第二个示例。请帮助我将第一个例子改为正确。
非常感谢提前。
我添加了另一个例子。第四个。请帮忙。
答案 0 :(得分:1)
using System;
using System.Linq;
public class Program {
public static void Main() {
Console.WriteLine("LANE/CLEAN: {0}", Test("LANE", "CLEAN"));
Console.WriteLine("AGED/CAGED: {0}", Test("AGED", "CAGED"));
Console.WriteLine("AGED/RAGE: {0}", Test("AGED", "RAGE"));
Console.WriteLine("CANCEL/CONCEAL: {0}", Test("CANCEL", "CONCEAL"));
}
public static bool Test(string s1, string s2) {
var sourceLetters = s1.ToCharArray().ToList();
foreach (var letter in s2.ToCharArray())
if (sourceLetters.Contains(letter))
sourceLetters.Remove(letter);
return !sourceLetters.Any();
}
}
// Results:
//
// LANE/CLEAN: True
// AGED/CAGED: True
// AGED/RAGE: False
// CANCEL/CONCEAL: True
答案 1 :(得分:1)
public bool StringSimularity(string s1, string s2)
{
var res = s1.Intersect(s2);
if (res.Count().Equals(s2.Length) || res.Count().Equals(s1.Length))
return true;
else
return false;
}
答案 2 :(得分:0)
这样的东西?
string word = "LANE";
string[] wordList = { "CLEAN", "AGED", "CAGED", "RAGE" };
foreach (string w in wordList)
{
Boolean x = true;
foreach (char c in word)
{
if (!w.Contains(c))
{
x = false;
break;
}
}
if (x)
Console.WriteLine(w);