星空网 > 软件开发 > ASP.net

C#算法之判断一个字符串是否是对称字符串

记得曾经一次面试时,面试官给我电脑,让我现场写个算法,判断一个字符串是不是对称字符串。我当时用了几分钟写了一个很简单的代码。

这里说的对称字符串是指字符串的左边和右边字符顺序相反,如"abba",单个字符串暂且算非对称字符串,虽然有字符串看起来是对称的如"A、"H"、"O"、"中"、"人"...,严格来说,也是不对称的,把它们放大时,线条的粗细是不一样的。

static bool IsSymmetry1(string str){  if (string.IsNullOrEmpty(str) || str.Length == 1)  {    return false;  }  for (int i = 0; i < str.Length / 2; i++)  {    if (str[i] != str[str.Length - 1 - i])    {      return false;    }  }  return true;}

这个很简单,最多遍历字符串长度的一半次数,对比第一个跟倒数第一个,第二个跟倒数第二个...

C#算法之判断一个字符串是否是对称字符串

功能是实现了,但给人的感觉是太简单,效率也不高。既然是算法,那就得效率高。

我跟朋友讨论了下,朋友给了另一个方案

static bool IsSymmetry2(string str){  if (string.IsNullOrEmpty(str) || str.Length == 1)  {    return false;  }  var halfLength = str.Length/2;  var str1 = str.Substring(0, halfLength);  var str2 = new String(str.Substring(str.Length%2 == 0 ? halfLength : halfLength + 1, halfLength).Reverse().ToArray());  return str1.Equals(str2);      }

这个方案就是将字符串拆成两半,将后一半反转跟前一半比较。

C#算法之判断一个字符串是否是对称字符串

效果也能实现,没用遍历,看起来比上个方案要高大上,实际运行效率更低。

这两种方案只是入门级别的,肯定还有更好,更高效率的写法,请求各位大神分享.谢谢!

如果觉得对你有帮助,请点个赞,谢谢!

不足与错误之处,敬请批评指正!




原标题:C#算法之判断一个字符串是否是对称字符串

关键词:C#

C#
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

Brand24:https://www.ikjzd.com/w/1999
魅卡多网MercadoLibre:https://www.ikjzd.com/w/200
巴西电商平台Casas Bahia:https://www.ikjzd.com/w/2000
印尼股权众筹平台Akseleran:https://www.ikjzd.com/w/2001
DesignMantic_DesignMantic平面设计软件:https://www.ikjzd.com/w/2002
Business Card Maker_名片设计打印软件Business Card Maker:https://www.ikjzd.com/w/2003
从园岭新村到大梅沙海滨总站坐什么车:https://www.vstour.cn/a/363191.html
七月份适合去日本旅游吗 7月份去日本哪里好玩:https://www.vstour.cn/a/363192.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流