牛客網刷題之字串 字串的正則匹配 數值字串

2021-10-04 05:37:41 字數 1778 閱讀 9969

題目1描述:

請實現乙個函式用來匹配包括 '.『和』『的正規表示式 。模式中的字元』.『表示任意乙個字元,而』'表示它前面的字元可以出現任意次(包含0次)。 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串"aaa"與模式"a.a"和"abaca"匹配,但是與"aa.a"和"ab*a"均不匹配

題目解析:

**1.**當模式串pattern當前位置的後乙個元素為字元時,那麼分為兩種情況:

a.字串str的當前元素與模式串pattern的當前位置相等或者模式串當前位置為『.』,那麼進行遞迴返回三種情況:

將模式串指標後移兩個位置,字串指標不動(這個表示匹配前方元素出現0次)

將字串指標後移一位,模式串後移兩位(這個表示匹配前方元素出現1次)

將字串指標後移一位,模式串不動(這個表示前方元素匹配多次)

b.否則表示當前元素與模式串不相等並且不是萬能字元』.』,那麼字元『』匹配0次進行遞迴

**2.**如果當前指標後乙個位置的元素不為』'字元,那麼判斷字串當前元素與模式串是否匹配,匹配則後移繼續比較,不相等時直接返回false

**如下:

public

class

solution

public

boolean

match

(char

str ,

int sindex,

char

pattern,

int pindex)

else

}//當前元素位置的下乙個位置不為'*'字元,且當前位置相等時if(

(sindex!=str.length&&str[sindex]

==pattern[pindex])||

(pattern[pindex]

=='.'

&&sindex!=str.length)

)else

}}

題目2描述:

請實現乙個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串"+100",「5e2」,"-123",「3.1416"和」-1e-16"都表示數值。 但是"12e",「1a3.14」,「1.2.3」,"±5"和"12e+4.3"都不是。

題目解析:

對於所要檢驗的字串進行遍歷,使用乙個指標進行遍歷,遍歷過程中記錄三個狀態,當前數字的個數num,當前小數點的個數dot,當前e出現的次數nume。先判斷第乙個位置,如果第乙個位置為『+』或者『-』,將指標後移,緊挨著後面不能為空字元,否則返回false,進行迴圈遍歷,遇到數字時num+1,指標+1,遇到『.』時先判斷是否出現過』.'字元以及是否前面有數字,遇到e時需要判斷是否出現過e或者數字,隨後要進行判斷後邊的元素是否有加減號,並且加減號後邊有字元。

**如下:

public

class

solution

else

if(str[index]

=='.'

)else

if(str[index]

=='e'

||str[index]

=='e'

)else

return

false

;//其他字元

}return

true;}

}

牛客網 字串的統計字串

牛客網 題目描述 給定乙個字串str,返回str的統計字串。例如 aaabbbbcccd 的統計字串為 a 3 b 4 c 3 d 1 輸入字元長度都大於1 解題思路 1.第一種方法輸入的是 aaa n 這種字元。因此我們將當前字元cur指向首字元,從1 字串長度的範圍內開始遍歷判斷當前字元cur是...

牛客網 表示數值的字串(字串)

題目 請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。知識點 正規表示式 d 數字字元匹配,0 9.ee 匹配e或e,匹配括號中任意乙個字元 ...

牛客網 字串價值

熱度指數 7時間限制 1秒空間限制 32768k 有一種有趣的字串價值計算方式 統計字串中每種字元出現的次數,然後求所有字元次數的平方和作為字串的價值 例如 字串 abacaba 裡面包括4個 a 2個 b 1個 c 於是這個字串的價值為4 4 2 2 1 1 21 牛牛有乙個字串s,並且允許你從s...