LIst和Dictionary实例应用(※)

14 篇文章 0 订阅
该博客主要讨论如何将一个打乱顺序的句子重新排列回原始顺序。给定一个包含1到9的单词位置索引的句子,任务是通过索引排序单词并移除数字,恢复句子的正确顺序。示例中给出了具体的实现代码,使用了字典来存储单词及其位置,然后按照位置排序并组合成原始句子。
摘要由CSDN通过智能技术生成

一个 句子 指的是一个序列的单词用单个空格连接起来,且开头和结尾没有任何空格。每个单词都只包含小写或大写英文字母。

我们可以给一个句子添加 从 1 开始的单词位置索引 ,并且将句子中所有单词 打乱顺序 。

比方说,句子 "This is a sentence" 可以被打乱顺序得到 "sentence4 a3 is2 This1" 或者 "is2 sentence4 This1 a3" 。
给你一个 打乱顺序 的句子 s ,它包含的单词不超过 9 个,请你重新构造并得到原本顺序的句子。

实例1:

输入:s = "is2 sentence4 This1 a3"
输出:"This is a sentence"
解释:将 s 中的单词按照初始位置排序,得到 "This1 is2 a3 sentence4" ,然后删除数字。

实例2:

输入:s = "Myself2 Me1 I4 and3"
输出:"Me Myself and I"
解释:将 s 中的单词按照初始位置排序,得到 "Me1 Myself2 and3 I4" ,然后删除数字。

代码:

public static string SortSentence(string s)
        {
            Dictionary<int, string> dic = new Dictionary<int, string>();
            List<string> ls = s.Split(' ').ToList();//字符串转list
            int ls_count = ls.Count;
            string res = "";
            for (int i = 0; i < ls_count; i++)
            {
                string[] vs = new string[2];
                vs[0] = ls[i].Substring(ls[i].Length - 1, 1);//开始位置,截取个数
                vs[1] = ls[i].Substring(0, ls[i].Length - 1);
                dic.Add(Convert.ToInt32(vs[0]), vs[1]);
            }
            int count = dic.Count + 1;
            for (int i = 1; i < count; i++)
            {
                res += " ";
                res += dic[i];//字典int,string通过int取值string
            }
            return res.Trim();//从当前字符串中删除所有前导和尾随的空白字符。
        }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# 中,我们可以使用扩展方法为 ListDictionary 类型添加新的方法。扩展方法是一种特殊的静态方法,它可以像实例方法一样调用,但是它定义在一个静态类中,并且第一个参数用 this 关键字标记,表示该方法是针对该类型的扩展方法。 下面是一个例子,演示如何为 List 类型添加一个新的扩展方法: ``` public static class ListExtensions { public static void Print<T>(this List<T> list) { foreach (var item in list) { Console.WriteLine(item); } } } ``` 这个扩展方法名为 Print,它可以输出 List 中的元素。我们将其定义在一个名为 ListExtensions 的静态类中,它的第一个参数是 this List<T>,表示这是一个针对 List<T> 类型的扩展方法。在方法体中,我们使用 foreach 循环遍历 List 中的元素,并输出它们的值。 现在,我们可以在任何 List<T> 实例上调用这个方法,就像调用实例方法一样: ``` List<int> numbers = new List<int> { 1, 2, 3 }; numbers.Print(); ``` 这将输出: ``` 1 2 3 ``` 同样的方式,我们也可以为 Dictionary 类型添加新的扩展方法。下面是一个例子,演示如何为 Dictionary<string, int> 类型添加一个新的扩展方法: ``` public static class DictionaryExtensions { public static void Print(this Dictionary<string, int> dictionary) { foreach (var key in dictionary.Keys) { Console.WriteLine("{0}: {1}", key, dictionary[key]); } } } ``` 这个扩展方法名为 Print,它可以输出 Dictionary 中的键值对。我们将其定义在一个名为 DictionaryExtensions 的静态类中,它的第一个参数是 this Dictionary<string, int>,表示这是一个针对 Dictionary<string, int> 类型的扩展方法。在方法体中,我们使用 foreach 循环遍历 Dictionary 中的键,并输出它们对应的值。 现在,我们可以在任何 Dictionary<string, int> 实例上调用这个方法,就像调用实例方法一样: ``` Dictionary<string, int> scores = new Dictionary<string, int> { { "Alice", 99 }, { "Bob", 85 }, { "Charlie", 70 } }; scores.Print(); ``` 这将输出: ``` Alice: 99 Bob: 85 Charlie: 70 ``` 通过扩展方法,我们可以为 ListDictionary 等类型添加新的功能,以便更方便地使用它们。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值