有两个顺序串和t,设计一个算法,按“字典顺序”比较它们的大小,如下图

atou1 2016-04-11 04:51:16
...全文
471 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋的红果实 2016-04-11
  • 打赏
  • 举报
回复
红色部分给出了是否相等的判断,而没有大于、小于 SqStringClass s=new SqStringClass(); s.StrAssign(TextBox1.Text.Trim()); SqStringClass t=new SqStringClass(); t.StrAssign(TextBox2.Text.Trim()); SqStringClass temp=new SqStringClass(); bool isEqual=temp.StrEqueal(s,t); TextBox3.Text=isEqual.Equals(true)?"等于":"不等于";
atou1 2016-04-11
  • 打赏
  • 举报
回复
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace WindowsFormsApplication1 { class SqStringClass { const int MaxSize = 100; public char[] data; public int length; public SqStringClass() { data = new char[MaxSize]; length = 0; } public void StrAssign(string cstr) { int i; for (i = 0; i < cstr.Length; i++) data[i] = cstr[i]; length = i; } public void StrCopy(SqStringClass t) { int i; for (i = 0; i < t.length; i++) data[i] = t.data[i]; length = t.length; } public int StrLength() { return length; } public SqStringClass Concat(SqStringClass t) { SqStringClass nstr = new SqStringClass(); int i; nstr.length = length + t.length; for (i = 0; i < length; i++) nstr.data[i] = data[i]; for (i = 0; i < t.length; i++) nstr.data[length + i] = t.data[i]; return nstr; } public SqStringClass SubStr(int i, int j) { SqStringClass nstr = new SqStringClass(); int k; if (i <= 0 || i > length || j < 0 || i + j - 1 > length) return nstr; for (k = i - 1; k < i + j - 1; k++) nstr.data[k - i + 1] = data[k]; nstr.length = j; return nstr; } public SqStringClass InsStr(int i, SqStringClass s) { int j; SqStringClass nstr = new SqStringClass(); if (i <= 0 || i > length + 1) return nstr; for (j = 0; j < i - 1; j++) nstr.data[j] = data[j]; for (j = 0; j < s.length; j++) nstr.data[i + j - 1] = s.data[j]; for (j = i - 1; j < length; j++) nstr.data[s.length + j] = data[j]; nstr.length = length + s.length; return nstr; } public SqStringClass DelStr(int i, int j) { int k; SqStringClass nstr = new SqStringClass(); if (i <= 0 || i > length || i + j - 1 > length) return nstr; for (k = 0; k < i - 1; k++) nstr.data[k] = data[k]; for (k = i + j - 1; k < length; k++) nstr.data[k - j] = data[k]; nstr.length = length - j; return nstr; } public SqStringClass RepStr(int i, int j, SqStringClass s) { int k; SqStringClass nstr = new SqStringClass(); if (i <= 0 || i > length || i + j - 1 > length) return nstr; for (k = 0; k < i - 1; k++) nstr.data[k] = data[k]; for (k = 0; k < s.length; k++) nstr.data[i + k - 1] = s.data[k]; for (k = i + j - 1; k < length; k++) nstr.data[s.length + k - j] = data[k]; nstr.length = length - j + s.length; return nstr; } public bool StrEqueal(SqStringClass s, SqStringClass t) { int i; if (s.length != t.length) return false; for (i = 0; i < s.length; i++) if (s.data[i] != t.data[i]) return false; return true; } public string DispStr() { int i; string mystr = ""; if (length == 0) mystr = "空串"; else { for (i = 0; i < length; i++) mystr += data[i].ToString(); } return mystr; } } } 如果调用红色这部分代码该如何调用来实现呢?
atou1 2016-04-11
  • 打赏
  • 举报
回复
谢谢
xuzuning 2016-04-11
  • 打赏
  • 举报
回复
        static void Main(string[] args)
{
var s = "ac";
var t = "adcdef";
Console.WriteLine(string.Compare(s, t) > 0 ? "大于" : "小于");
Console.WriteLine(DictionariesCompare(s, t) ? "大于" : "小于");

Console.ReadKey();
}
static bool DictionariesCompare(string s, string t)
{
for (var i = 0; i < Math.Min(s.Length, t.Length); i++)
{
if (s[i] != t[i]) return s[i] < t[i];
}
return s.Length > t.Length;
}
atou1 2016-04-11
  • 打赏
  • 举报
回复
串s和t就是自己建立的顺序串例如:串s{"ac"},串t{"adcdef"}时,比较按钮按下之后是s>t
秋的红果实 2016-04-11
  • 打赏
  • 举报
回复
这图好像见过,有个较复杂的类,是string操作的底层实现。有个成员public char[] data;存放字符串每个字符的 不知道是不是类似问题
秋的红果实 2016-04-11
  • 打赏
  • 举报
回复
根据你的图,应该是串s大于t,否则,请说明你的比较规则
Poopaye 2016-04-11
  • 打赏
  • 举报
回复
引用 2 楼 atou1 的回复:
实现这么一个操作
这个比较结果完全无法理解啊
大鱼> 2016-04-11
  • 打赏
  • 举报
回复
哦哦,我懂你的意思了。 你需要逐个字符进行判断了
atou1 2016-04-11
  • 打赏
  • 举报
回复
实现这么一个操作
大鱼> 2016-04-11
  • 打赏
  • 举报
回复
你获取字符串每个字符的ASCii码值加起来比较啊。
  • 打赏
  • 举报
回复
能举例说明你的比较概念吗?返回的又是什么?

110,535

社区成员

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

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

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