久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

利用C#實現(xiàn)串結(jié)構(gòu)

 老馬的程序人生 2020-08-17

我們古人沒有電影電視,沒有游戲網(wǎng)絡(luò),,所以文人們就會想出一些文字游戲來娛樂,。比如宋代的李禺寫了這樣一首詩:“枯眼望遙山隔水,往來曾見幾心知,?壺空怕酌一杯酒,,筆下難成和韻詩。途路阻人離別久,,訊音無雁寄回遲,。孤燈守夜長寥寂,夫憶妻兮父憶兒。”顯然這是老公想念老婆和兒子的詩句,。曾經(jīng)和妻兒在一起,,享受天倫之樂,現(xiàn)在一個人長久沒有回家,,也不見書信返回,,望著油燈想念親人,能不傷感嗎,?

可仔細(xì)一讀發(fā)現(xiàn),,這首詩竟然可以倒過來讀:“兒憶父兮妻憶夫,寂寥長夜守?zé)艄?。遲回寄雁無音訊,,久別離人阻路途。詩韻和成難下筆,,酒杯一酌怕空壺,。知心幾見曾來往,水隔山遙望眼枯,。”這表達(dá)了妻子對丈夫的思念,。老公離開好久,路途遙遠(yuǎn),,難以相見,。寫信不知道寫什么,獨自喝酒也沒什么興致,。只能和兒子夜夜守在家里一盞孤燈下,苦等老公的歸來,。

這種詩叫做回文詩,。它是一種可以倒讀或反復(fù)回旋閱讀的詩體。剛才這首就是正讀是丈夫思念妻子,,倒讀是妻子思念丈夫的古詩,。是不是感覺很奇妙呢?

在英文單詞中,,同樣有神奇的地方,。“即使是lover也有個over,,即使是friend也有個end,,即使是believe也有個lie?!蹦銜l(fā)現(xiàn),,本來不相干,甚至對立的兩個詞,卻有某種神奇的聯(lián)系,。這可能是創(chuàng)造這幾個單詞的智者們也沒有想到的問題,。

今天我們就要來談?wù)勥@些單詞或句子組成字符串的相關(guān)問題。

1 串的定義與操作

1.1 串的相關(guān)定義

串(string)是由零個或多個字符組成的有限序列,,又名字符串,,記為S=”a0a1……an-1”。

串中包含字符的個數(shù)稱為串的長度,。

長度為零的串稱為空串(null string),。直接用雙引號””表示,在C#中也可用string.Empty來表示,。

還有一些概念需要解釋:

空白串:由一個或多個空格組成的串,。

子串與主串:串中任意連續(xù)字符組成的子序列,稱為該串的子串,。相應(yīng)的包含子串的串稱為主串,,即子串是主串的一部分。

子串在主串中的位置:子串在主串中第一次出現(xiàn)時,,子串第一個字符在主串中的序號,。

例如

A=“this is a string”;

B=“is”;

B在A中的位置為2。

串相等:長度相等且對應(yīng)位字符相同,。

1.2 串的操作

串的邏輯結(jié)構(gòu)和線性表很相似,,不同之處在于串針對的是字符集,也就是串中的元素都是字符,。因此,,對于串的基本操作與線性表是有很大差別的。線性表更關(guān)注的是單個元素的操作,,比如查找一個元素,,插入或刪除一個元素,但串中更多的是關(guān)注它子串的應(yīng)用問題,,如查找子串位置,,得到指定位置子串、替換子串等操作,。

關(guān)于串的基本操作如下:

(1)獲取串的長度

(2)獲取或設(shè)置指定索引處的字符

(3)在指定位置插入子串

(4)在指定位置移除給定長度的子串

(5)在指定位置取子串

(6)當(dāng)前串的拷貝

(7)串連接

(8)串的匹配

(9)串替換

(10)移除串兩邊的空格

(11)串填充

比如C#中,,字符串操作就還有ToLower轉(zhuǎn)小寫、ToUpper轉(zhuǎn)大寫,、IndexOf從左查找子串位置,、LastIndexOf從右查找子串位置、Trim去除兩邊空格等比較方便的操作,,它們其實就是前面這些基本操作的擴(kuò)展函數(shù),。

1 串接口

代碼見:LinearStruct.IString.cs

2 串的存儲與實現(xiàn)

串的存儲結(jié)構(gòu)與線性表相同,,分為兩種:

順序存儲:char類型的數(shù)組。由于數(shù)組是定長的,,就存在一個預(yù)定義的最大串長度,,它規(guī)定在串值后面加一個不計入串長度的結(jié)束符,比如’\0’來表示串值的終結(jié),。

鏈?zhǔn)酱鎯Γ?/span>SlinkList<char> (浪費存儲空間)


2 順序串類圖

代碼見:LinearStruct.SeqString.cs

3 舉例:

using System;

using LinearStruct;

namespace ConsoleApplicationString

{

    classProgram

    {

        privatestatic voidMain(string[] args)

        {

            string S = "teacherand student all like tea.";

            IString str = new SeqString(S);

            Console.WriteLine("原字符串:{0}", str);

            IString str2 = str;

            IString str3 = str.Clone();

            str2[0] = 'm';

            Console.WriteLine("沒調(diào)用Clone方法:{0}", str);

            Console.WriteLine("調(diào)用Clone方法:{0}", str3);

            Console.WriteLine("----------");

            str = new SeqString(S);

            IString str4 = newSeqString("mother");

            Console.WriteLine(str.Insert(0, str4));

            Console.WriteLine(str.Insert(3, str4));

            Console.WriteLine(str.Remove(3, 2));

            Console.WriteLine(str.Remove(3, 10));

            Console.WriteLine("----------");

            Console.WriteLine(str.Concat(str4));

            Console.WriteLine((SeqString)str4 + (SeqString) str);

            Console.WriteLine("----------");

            Console.WriteLine(str.SubString(3, 0));

            Console.WriteLine(str.SubString(3, 4));

            Console.WriteLine(str.SubString(3, 10));

            Console.WriteLine("----------");

            IString parS1 = newSeqString("ea");

            IString parS2 = newSeqString("hk");

            Console.WriteLine(str.IndexOf(parS1));

            Console.WriteLine(str.IndexOf(parS1, 8));

            Console.WriteLine(str.IndexOf(parS2));

            Console.WriteLine("----------");

            Console.WriteLine(str.PadLeft(40, '@'));

            Console.WriteLine("----------");

            Console.WriteLine(str.Replace(new SeqString("ea"), newSeqString("EA")));

            Console.WriteLine("----------");

            Console.WriteLine(str.Concat(str4).Length);

            Console.WriteLine(str.Concat(str4).Trim().Length);

        }

    }

}


通過微信學(xué)習(xí)的知識只能是碎片化的知識,,作為新時代的我們希望能夠構(gòu)建自己的知識結(jié)構(gòu),使我們的知識體系化,,系統(tǒng)化,,以后在遇到碎片化的知識,我們做的只是融合到自己的知識結(jié)構(gòu)中,,故我們將推出“與LSGO一起學(xué)”系列課程,,幫助大家來構(gòu)建知識框架,初步規(guī)劃有:

  1. “與LSGO一起學(xué)C++”,;

  2. “與LSGO一起學(xué)C#”,;

  3. LSGO一起學(xué)Matlab”;

  4. “與LSGO一起學(xué)數(shù)據(jù)結(jié)構(gòu)”,;

  5. “與LSGO一起學(xué)設(shè)計模式”,;

  6. “與LSGO一起學(xué)可視化建模語言(UML)”;

  7. “與LSGO一起學(xué)線性代數(shù)”,;

  8. “與LSGO一起學(xué)高等數(shù)學(xué)”

  9. “與LSGO一起學(xué)概率論與數(shù)理統(tǒng)計”,;

  10. “與LSGO一起學(xué)抽象代數(shù);

  11. “與LSGO一起學(xué)點集拓?fù)洹?/span>

  12. “與LSGO一起學(xué)數(shù)字圖像處理”,;

  13. “與LSGO一起學(xué)智能計算”,;

如果對這些內(nèi)容感興趣,可以一起來學(xué)習(xí)討論,。

我們的官網(wǎng): www.lsgogroup.com

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多