1. 程式人生 > >求字串子串數目的方法

求字串子串數目的方法

最近在做一些演算法題,經常遇到字串的問題,需要計算字串子串的數目,字串的子串數目為
n(n+1)/2 + 1,這個答案是如何求得的呢?
我們都知道子串是一個字串中連續的一段,其實你可以把它抽象為周圍有邊界的一串字元,如”abcde”,你可以把子串”bc”抽象為”a|bc|de”,這樣一來計運算元串數目的問題其實就轉化成了計算字串中放置邊界的問題,一個長度為n的字串中可以放置n個邊界,放置第一個邊界後可以放置有n-1種選擇作為第二條邊界,這樣得到n(n-1)條子串,又因為兩條邊界順序互換子串不變,所以結果需要除以2,最後再加上字串本身,得到n(n+1)/2 + 1。

相關推薦

串子數目方法

最近在做一些演算法題,經常遇到字串的問題,需要計算字串子串的數目,字串的子串數目為 n(n+1)/2 + 1,這個答案是如何求得的呢? 我們都知道子串是一個字串中連續的一段,其實你可以把它抽象為

【演算法】串子的高效實現

出處 有一道秋招筆試題是這樣: 輸入兩個正整數n、d(1<=d<=1000),把n看成字串,求n的所有子串中能被d整除的子串的個數。 示例1: 輸入:1234 4,輸出:4,說明:12、124、24、4 示例2: 輸入:616 3,輸出:3,說明:6、

Java中獲取特定符號中間串子方法

使用str.split(" "); 方法 如: 將str這個字串用逗號“,”進行分割,分割後的字串陣列放在a[]中 比如 111,222,333 那麼a[0]=111 a[1]=222 a[2]=

【ForOffer】【深信服--測試開發崗筆試題】最少車費&最低位&找馬甲&找串子

深信服的整體筆試題難度一般,有多刷題的經驗,能立馬找出了題意理解,在此,自己只是做個總結髮出,有更好的解法的童靴可以一起交流,其實這四道題都是常見題型的一種變形。程式碼照著搬都是沒有問題的哦! 第一題:求最低位  關鍵點說明:主要是對二進位制轉換,並且擷取到了從右

動態規劃——兩個串子的個數和最長子的長度

美圖測開的筆試題: 求兩個字串的子串個數和最大子串長度。 (需要注意一下子串和子序列概念並不相同) 字串1:str1,字串2:str2 用dp[i][j]表示以str1[i]和str[j]結尾的相同子串的長度。 則轉移方程顯然為: 1.str1[i] != str2[j]

ip地址的正則表達式及JAVA的提取方法

ava compile 正則表達式 pat group put [0 header 方法 ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?) Pattern p=Pattern.comp

php實現中文反轉方法

str1 單個 head 共和國 list har 字符串 string text 1 <?php 2 3 header("content-type:text/html;charset=utf-8"); 4 /** 5 此函數的作用是反轉中文字符串

day2 常用方法總結

mes 一個 並且 lun int() join() eba false 換行符 字符串在Python中是常用的功能,我們知道,字符串在Python中存儲的形式是以字符數組的形式存在,比如"alex"在內存中的存儲形式是:["a","l","e","x"],因為我們

MYSQL查詢某段中以逗號分隔的方法

into create style lan ive primary div ble tle 首先我們建立一張帶有逗號分隔的字符串。 CREATE TABLE test(id int(6) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id),p

常用的操作方法

bcd style abcd script ring blog def span 包括 1、search 查找(只找第一次出現的位置,如果沒有找到則返回-1) eg: <script> var str=‘abcdef‘;

C語言中的長度

類型 char 計算 語言 col pan har 字符 str1 在C語言中求字符串的長度,可以使用sizeof()函數和strlen()函數,後者需要引入string.h (#include <string.h>) 因為C語言字符串是以 \0 結尾表示結束的

處理方法

sum 文件名 oda dea 字符 urn 小寫字母 car 有效 JS自帶函數concat將兩個或多個字符的文本組合起來,返回一個新的字符串。var a = "hello";var b = ",world";var c = a.concat(b);alert(c);//

LeetCode -- 數組中的最長公共前綴

longest ges pub data- find npr amongst 空間 size 題目描寫敘述:Write a function to find the longest common prefix string amongst an array of stri

js中替換(replace方法最簡單的應用)

sre 正則表達 表達 格式 str ext 替換字符串 repl regexp replace方法的語法是:stringObj.replace(rgExp, replaceText) 其中stringObj是字符串(string),reExp可以是正則表達式對

iOS 根據數目,自定義Label等控件的高度

rect 復制代碼 設置 高度 uifont ios oat size hsi 利用分類,NSString,增加一個方法。 #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @

spring中頁面傳遞參數為Date類型自動轉換為方法

ring sim new spring 自動轉換 方法 -m web tom @InitBinder public void initBinder(WebDataBinder binder){ SimpleDateFormat sdf =new SimpleDateFor

javascript 對象屬性的添加,刪除,json對象和轉換方法

star font style strong 字符串轉換 定義 obj tarray def 1:動態添加 對象屬性 var obj = new Object(); console.log (obj.username); obj.username = "haha"; con

js中方法

last 常用方法 沒有 arch 字符串數組 indexof cab 16px 末尾 js String對象中常用方法小結,需要的朋友可以參考下: 1、charCodeAt方法返回一個整數,代表指定位置字符的Unicode編碼。 strObj.charCodeAt(i

[2013百度軟件研發筆試題] 中連續出現同樣符的最大值

方法 連續 軟件 其它 dsm 筆試面試 面試 完整 pre 題目完整描寫敘述為:用遞歸的方式實現一個求字符串中連續出現同樣字符的最大值。如aaabbcc,連續出現a的最大值為3,abbc,連續出現字符最大的值為2。 下面是我想出來的方法: #include &l

python之操作方法

python之str定義及特性: 以引號(單引號,雙引號,三引號)包圍且不能修改a= ‘ \t aBcdE fgFijDlmNopq rSt uTwxy z 123 !@# \t ‘一、判斷字符串,返回bool值:False或Trueprint(a.isidentifier())