字串中單調遞增連續子串行 Bash

2021-08-26 22:30:57 字數 825 閱讀 7165

該問題和求單調遞增子串行有點像,但不一樣。

其主要區別就是在於連不連續,如果不要求連續(單調遞增子串行)在實現時的演算法是動態規劃,比較複雜。

本文描述的問題是子串行連續的問題,相比而言會簡單很多,原理和求最大值是一樣的。

具體描述為給定乙個字串,求乙個子串,該子串滿足:

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 輸...