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; }
这个很简单,最多遍历字符串长度的一半次数,对比第一个跟倒数第一个,第二个跟倒数第二个...
功能是实现了,但给人的感觉是太简单,效率也不高。既然是算法,那就得效率高。
我跟朋友讨论了下,朋友给了另一个方案
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#
posted on 2015-07-01 10:25 xiaoafei1991 阅读(2673) 评论(3) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?