資料結構和演算法 字串

2021-10-25 07:14:22 字數 2006 閱讀 4325

想要研究字串的資料結構和演算法,可以先看一遍字串自帶的一些的屬性和方法

557.反轉字串中的單詞 iii

給定乙個字串,你需要反轉字串中每個單詞的字元順序,同時仍保留空格和單詞的初始順序。

示例:

輸入:"let's take leetcode contest"

輸出:"s'tel ekat edocteel tsetnoc"

思路1:

將字串用空格分隔成陣列

將陣列內的字串反轉

**1:

var reversewords = function(s) ).join(' ')

};

思路2:

將字串按每個字元分隔成陣列

將陣列內的字串反轉後再拼接成字串

將拼接成的字串再按空格分隔成陣列

然後將陣列內的字串反轉後再拼接成字串

**2:

var string="let's take leetcode contest";

function reversebyseparator(string, separator)

var reverseentiresentence = reversebyseparator(string, "");// "tsetnoc edocteel ekat s'tel"

reversebyseparator(reverseentiresentence, " ");// "s'tel ekat edocteel tsetnoc"

思路:

統計每個字母出現的次數,存起來

然後進行比較

**:

function maxtimeschar(str) 

let charobj = {};

for(let i=0;i= maxvalue)

} return maxchar;

}

思路:

利用reverse 進行字串反轉

然後和原字串對比是否相等

**:

function ispalindrom(str)
思路:

將兩個字串全部轉換成小寫或大寫字串

然後將每個字串按每個字元分隔成陣列,排序再拼接成字串

最後對比拼接成的字串是否相等

**:

var firstword = "mary";

var secondword = "army";

isanagram(firstword, secondword); // true

function isanagram(first, second)

思路:

迴圈判斷如果是左大括號就放到乙個定義的陣列中

如果是右大括號再接著判斷上面定義的陣列是否有值

如果有值就從尾部把定義的陣列移除掉乙個值

如果沒值就直接返回false

最後如果定義的陣列有值就返回false,否則返回true

**:

function isbalanced(expression)  else if (checkstring[i] === '}') else}} 

// if the array is not empty, it is not balanced

if (stack.length) return false;

return true;

}

思路:

把所有可能的字元定義成乙個字串

迴圈該指定長度的次數

獲取所有有可能的字元長度的隨機字元

把上屬獲取的隨機字元取整

然後從所有有可能的字串中把上屬整數字的值取出來

最後迴圈的把第五步取出來的字元加在一起返回

**:

function randomstring(n) 

return tmp;

}

資料結構和演算法(字串)

字串定義 由零個或多個字元組成的有限序列 字串的比較 一般只比較是否相等 可比大小,比相同位置上的字元的ascii值 字串的儲存結構 順序儲存 陣列 鏈式儲存 鍊錶 bf演算法 brute force,樸素的模式匹配演算法 核心思想 有兩個字串s和t,長度為n和m。首先s 1 和t 1 比較,若相等...

資料結構與演算法 字串

判斷乙個串是不是回文串,往往要分開編寫,造成 的拖沓 int longestpalindrome const char s,int n return max void longestpalindrome test 上面的迴圈中,對於回文長度本身的奇偶性,我們進行區別處理。這樣有點拖沓。我們根據乙個簡...

資料結構與演算法 字串

生成n對括號的所有合法排列 描述 給定乙個非負整數n,生成n對括號的所有合法排列。解答 該問題解的個數就是卡特蘭數,但是現在不是求個數,而是要將所有合法的括號排列列印出來。該問題和 程式設計之美 的買票找零問題一樣,通過買票找零問題我們可以知道,針對乙個長度為2n的合法排列,第1到2n個位置都滿足如...