国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#算法之判斷一個字符串是否是對稱字符串

2019-11-17 02:17:22
字體:
來源:轉載
供稿:網友

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);            }

這個方案就是將字符串拆成兩半,將后一半反轉跟前一半比較。

效果也能實現,沒用遍歷,看起來比上個方案要高大上,實際運行效率更低。

這兩種方案只是入門級別的,肯定還有更好,更高效率的寫法,請求各位大神分享.謝謝!

如果覺得對你有幫助,請點個贊,謝謝!

不足與錯誤之處,敬請批評指正!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兖州市| 昌宁县| 泸水县| 屏边| 南溪县| 广河县| 彰化县| 昔阳县| 晴隆县| 东山县| 中西区| 白山市| 龙江县| 增城市| 册亨县| 延长县| 札达县| 八宿县| 潼关县| 沭阳县| 江源县| 九龙县| 抚州市| 马边| 清新县| 调兵山市| 页游| 南阳市| 岐山县| 砚山县| 安新县| 新竹县| 德昌县| 余干县| 中方县| 兴化市| 乳山市| 平昌县| 苗栗市| 潼关县| 花莲市|