排序含有数字的字符串:一个巧妙地方法【转】

using System;
using System.Collections.Generic;

class Program
{
static void Main(string[] args)
{
string[] floors ={ "第3楼", "第2楼", "第11楼" };
Array.Sort<string>(floors, Factory.Comparer);
foreach (string s in floors)
Console.WriteLine(s);
Console.ReadKey();
}
}

// 工厂模式
class Factory : IComparer<string>
{
private Factory() { }
public static IComparer<string> Comparer
{
get { return new Factory(); }
}
public int Compare(string x, string y)
{
return x.Length == y.Length ? x.CompareTo(y) : x.Length - y.Length;
}
}

转自:http://www.cnblogs.com/smiler/archive/2014/09/29/4000662.html

时间: 2024-08-02 10:21:23

排序含有数字的字符串:一个巧妙地方法【转】的相关文章

排序含有数字的字符串:一个巧妙地方法

using System; using System.Collections.Generic; class Program { static void Main(string[] args) { string[] floors ={ "第3楼", "第2楼", "第11楼" }; Array.Sort<string>(floors, Factory.Comparer); foreach (string s in floors) Con

一个巧妙的方法实现elementUI的table的行选中

问题背景:点击上面的框,选中下面对象的行数据 刚开始考虑使用的是table的事件:toggleRowSelection,但是发现一个奇怪的现象 <div v-if="orderData.length > 0"> <h5>审核意见:</h5> <div class="review bg_gray" v-for="(item,index) in orderData"> <div class=

C++数字转为字符串的两种方法

1. strstream 可以利用 strstream库函数实现 代码如下: int n=98989898; strstream ss; string s; ss<<n; ss>>s; 注:用这种方法需要引入头文件 #include<strstream> 2. sprintf 代码如下: int n=989898989; char t[100]; sprintf(t,"%d",n); string s(t);

Excel-判断一个文本字符串中是否包含数字! 判断一个文本字符串是否是纯汉字!

0.判断一个文本字符串中是否包含数字!/判断一个文本字符串是否是纯汉字! 公式=IF(LENB(A1)=2*LEN(A1),”都是汉字“,“含有非汉字字符”) 解释函数: LEN(A1)#返回文本字符串中的字符个数:  ##双字字符*1*双字节字符个数+单字节字符*1*单字节字符个<=>计算字符个数: LENB(A1)#返回文本字符串中的字符个数.与双字节字符集(DBCS)一起使用.##双字节字符*2*双字节字符个数+单字节字符*1*单字节字符个数<=>计算字节个数: 字符:分为双

【源码】用1,2,2,3,4,5这六个数字,写一个函数,打印出所有不同的排序,要求:4不能放在第三位,3与5不能相连(C语言实现)

帮朋友做的,好像是一个面试题.暴力方式. #include <stdio.h> #include <stdlib.h> #include <string.h> //判断这个数是不是由1.2.2.3.4.5几位数字组成 int func(int n) { int a[5] = {0}; for(int i = 0; i < 6; i++) { int bit = n % 10; n /= 10; switch(bit) { case 1: a[0]++; break

14.输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。 要求时间复杂度是O(n)

待完善! 转载请注明出处:http://www.cnblogs.com/wuzetiandaren/p/4259199.html 声明:现大部分文章为寻找问题时在网上相互转载,此博是为自己做个记录记录,方便自己也方便有类似问题的朋友,本文的思想也许有所借鉴,但源码均为本人实现,如有侵权,请发邮件表明文章和原出处地址,我一定在文章中注明.谢谢. 题目: 输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字.要求时间复杂度是O(n).如果有多对数字的和等于输

在排序好的数组插入一个数字,数字要插入到合适的位置上

最近在看以前大一看过的一本书<JAVA开发实战经典>李兴华写的,每看一次以前看过的书,收获都是不一样的,很多东西以前不明白,现在一看恍然大悟的感觉: 这道题目是书上的习题,没给参考答案,我在网上也没找到好点的,就发上来,感觉这个算法还可以优化得更好,希望高手指点 // 在排序好的数组插入一个数字,数字要插入到合适的位置上 int intArr[] = { 11, 22,33, 44, 55, 66, 77}; int insertNum = 34; //找到要插入的位置 int insertI

【编程题目】输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。

第 14 题(数组):题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字.要求时间复杂度是 O(n).如果有多对数字的和等于输入的数字,输出任意一对即可.例如输入数组 1.2.4.7.11.15 和数字 15.由于 4+11=15,因此输出 4 和 11. 要求时间是O(n)肯定就只能扫描一遍. 又有两个数字要找,那就只能一个从头向后找 一个从后向前找 初始把大值设为最后一个数, 小值设为第一个数,如果数字和大于和,则减小大数的数值, 反之增大小

选取10-100之间的10个数字,存入一个数组,并排序

//选取10-100之间的10个数字,存入一个数组,并排序//实现该功能函数function randomNub(arr,len,min,max){ //如果给的长度大于取值范围,则超出提示 if(len>=(max-min)){ return "超过"+min+"-"+max+"之间的个数范围"+(max-min-1)+"个的总数"; } //从小到大排序,实现该数组的降序排列 if(arr.length>=le