翻转排序字符串

aimeast 2010-03-04 10:58:40
闲着没事,把字符串按翻转顺序排序。

例如原数组是:
string[] st = new string[] { "sadfwea", "vmeoijbrt", "gr", "btrjheb", "ernbrek", "faer", "n", };
按翻转排序后的结果是
sadfwea
btrjheb
ernbrek
n
faer
gr
vmeoijbrt


在如下框架内
        static void Main()
{
string[] st = new string[] { "sadfwea", "vmeoijbrt", "gr", "btrjheb", "ernbrek", "faer", "n", };
var ss = Fun(st);
foreach (var item in ss)
{
Console.WriteLine(item);
}
}

static string[] Fun(string[] st)
{
// ToDo::
}
...全文
186 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
gghlkk 2010-03-04
  • 打赏
  • 举报
回复
谢谢8L提醒 确实理解错了 更正下

st.OrderBy(str => new string(str.AsEnumerable<char>().Reverse<char>().ToArray<char>()));
wanghui0380 2010-03-04
  • 打赏
  • 举报
回复
如果是按 字符串按翻转顺序排序的话

那就是
st.OrderBy(c => new string(c.ToCharArray().Reverse().ToArray())).ToArray();
绿色夹克衫 2010-03-04
  • 打赏
  • 举报
回复
Linq版,效率较低

using System;
using System.Linq;

namespace CSharpTest
{
class Program
{
static void Main(string[] args)
{
string[] st = new string[] { "sadfwea", "vmeoijbrt", "gr", "btrjheb", "ernbrek", "faer", "n", };
var result = from item in st orderby item.Aggregate("", (acc, c) => c + acc) select item;
}
}
}
泡面之夏 2010-03-04
  • 打赏
  • 举报
回复
字符串按翻转顺序排序?
smallmaster 2010-03-04
  • 打赏
  • 举报
回复
ls把问题理解错了吧?
gghlkk 2010-03-04
  • 打赏
  • 举报
回复

static string[] Fun(string[] st)
{
return st.Reverse().OrderBy(str => System.Text.RegularExpressions.Regex.Match(str,@"\w$").Value).ToArray<string>();
}
smallmaster 2010-03-04
  • 打赏
  • 举报
回复
static string[] Fun(string[] st) {
// ToDo::
var list=st.ToList();
list.Sort(Compare);
return list.ToArray();
}
static int Compare (string strA,string strB){
//for(int i=strA)
int indexA = strA.Length - 1; int indexB = strB.Length - 1;
for (; indexA >= 0 && indexB >= 0; indexA--, indexB--) {
char charA = strA[indexA];
char charB = strB[indexB];
if (charA != charB) {
return charA.CompareTo(charB);
}
}
return 0;
}
绿色夹克衫 2010-03-04
  • 打赏
  • 举报
回复
using System;

namespace CSharpTest
{
class Program
{
static void Main(string[] args)
{
string[] st = new string[] { "sadfwea", "vmeoijbrt", "gr", "btrjheb", "ernbrek", "faer", "n", };
Array.Sort(st, Compare);
}

static int Compare(string a, string b)
{
int length = a.Length > b.Length ? a.Length : b.Length;

for (int i = 1; i <= length; i++)
{
if (a[a.Length - i] > b[b.Length - i])
return 1;
else if (a[a.Length - i] < b[b.Length - i])
return -1;
}

return 0;
}
}
}
zhushoudong 2010-03-04
  • 打赏
  • 举报
回复
不说的真的不知道是什么意思
wanghui0380 2010-03-04
  • 打赏
  • 举报
回复
  static void Main()
{
string[] st = new string[] { "sadfwea", "vmeoijbrt", "gr", "btrjheb", "ernbrek", "faer", "n", };
var ss = Fun(st);
foreach (var item in ss)
{
Console.WriteLine(item);
}
}

static string[] Fun(string[] st)
{
// ToDo::
return st.OrderBy(c => c.Substring(c.Length - 1, 1)).ToArray();
}
波导终结者 2010-03-04
  • 打赏
  • 举报
回复
是按字符串的最后一个字符来排序,而不是传统的第一个字符……这种叫翻转排序很容易导致误解
michaelnami 2010-03-04
  • 打赏
  • 举报
回复
什么叫反转排序 不懂
aimeast 2010-03-04
  • 打赏
  • 举报
回复
引用 3 楼 wanghui0380 的回复:
C# codestaticvoid Main()
{string[] st=newstring[] {"sadfwea","vmeoijbrt","gr","btrjheb","ernbrek","faer","n", };var ss= Fun(st);foreach (var itemin ss)
{
Console.WriteLine(item);
}
}staticstring[] Fun(string[] st)
{// ToDo::return st.OrderBy(c=> c.Substring(c.Length-1,1)).ToArray();
}


3楼这个有错

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧