您的位置:首页 > 编程语言 > C#

按拼音重复数匹配夫妻相

2015-01-09 10:18 267 查看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Husband_Wife_Looks
{
class Program
{
static void Main(string[] args)
{
//题目中预先给定一组女士的姓名拼音。输入男士的姓名拼音(拼音中间可以有空格,字母全部小写),依预先给定姓名拼音的先后遍历所有姓名,输出字母重复数最多的女士姓名。
//规则1:如果字母重复数最多的女士有多位相同,则以最先匹配的女士做为最具“夫妻相”的人选。
//规则2:人名中的相同字母,按重复一次处理。例如:li ling 与li lei 重复的字符个数为2,而不是4。
//预置女士名单(先后循序必须保证):
//"wang fei",
//"zhang man yu",
//"zhang zhi yi",
//"li li",
//"li xiao man",
//"li yu cun",
//"yang ni",
//"xiao tong",
//"li lei",
//"zhang san"
//运行时间限制: 无限制
//内存限制: 无限制
//输入: 输入一个男士姓名,字符串
//输出: 输出最具“夫妻相”的女士姓名
Console.WriteLine("输入姓名拼音:");
var input = Console.ReadLine();
var arrFemale = new string[] { "wang fei", "zhang man yu","zhang zi yi", "li li", "li yu cun", "yang ni", "xiao tong", "li lei", "zhang san" };

var cInput = input.Trim().ToCharArray();
//遍历女士姓名
var rIndex = 0;//记录最佳匹配结果所在位置
var rCount = 0;//记录最佳匹配结果的匹配个数
for (var i = 0; i < arrFemale.Length; i++)
{
var count = 0;//记录重复字符的个数
//遍历男士姓名的字符
for (var j = 0; j < cInput.Length; j++)
{
if (arrFemale[i].Contains(cInput[j])) count++;
}
if (count > rCount)
{
rCount = count;
rIndex = i;
}
}
Console.WriteLine(arrFemale[rIndex]);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c# 夫妻相