該問題和求單調遞增子串行有點像,但不一樣。
其主要區別就是在於連不連續,如果不要求連續(單調遞增子串行)在實現時的演算法是動態規劃,比較複雜。
本文描述的問題是子串行連續的問題,相比而言會簡單很多,原理和求最大值是一樣的。
具體描述為給定乙個字串,求乙個子串,該子串滿足:
1. 連續
2. 該子串遞增
3. 是最長的單調連續遞增的子串
例如:zxuhababcba
結果:abc
**如下:
#!/bin/bash## the input str for test
inputstr="zxuhababcba";
strlength=$;
## record the max monotone increasing sub str
maxsubstrlength=0;
maxstartpos=0;
## record the position of current monotone increasing sub str
currentstartpos=0;
## find the result
for((i=1;i在掃瞄過程中,記下目前為止最長的單調遞增序列的開始和長度,並在當掃瞄中出現「拐彎」情況時,將新的遞增子串行與當前記錄中的最長單調遞增子串行比較。
執行結果為:
該方法和給定乙個陣列,求陣列中最大元素的方法是一回事。
此外,如果你想求最長單調遞減子串行,則只需要改變上述**中的乙個字元就可以了,你知道是哪個嗎?哈哈^_^
歡迎來拍!!!
字串中連續遞增英文本串長度 回文子串個數
輸入 abcab 輸出 3 def f in str 定義乙個列表用來儲存次數 list 得到每乙個元素和對應的索引值 for index,first s in enumerate in str 記錄次數 count 1 定義乙個變數用來儲存需要判斷的字元 one str first s 用第乙個f...
求最長連續公共子串行和最長連續子字串
問題的關鍵是如何定義子問題。假設有 xm x1 x2 x3 xm yn y1 y2 y3 yn 1.最長公共子串行 不必連續 定義f m,n 為xm和yn之間最長的子串行的長度 於是有f m,0 f 0,m 0 如果xm yn,則f m,n max 如果xm yn,則f m,n f m 1,n 1 ...
將字串翻轉到單調遞增
如果乙個由 0 和 1 組成的字串,是以一些 0 可能沒有 0 後面跟著一些 1 也可能沒有 1 的形式組成的,那麼該字串是單調遞增的。我們給出乙個由字元 0 和 1 組成的字串s,我們可以將任何 0 翻轉為 1 或者將 1 翻轉為 0 返回使s單調遞增的最小翻轉次數。示例 1 輸入 00110 輸...