題目:
給你一個(gè)字符串 s ,每 兩個(gè) 連續(xù)豎線 '|' 為 一對(duì) 。換言之,第一個(gè)和第二個(gè) '|' 為一對(duì),第三個(gè)和第四個(gè) '|' 為一對(duì),以此類推。
請(qǐng)你返回 不在 豎線對(duì)之間,s 中 '*' 的數(shù)目。
注意,每個(gè)豎線 '|' 都會(huì) 恰好 屬于一個(gè)對(duì)。
示例 1:
輸入:s = "l|eet|co|de|"
輸出:2
解釋:不在豎線對(duì)之間的字符加粗加斜體后,得到字符串:"l|eet|co|de|" 。
第一和第二條豎線 '|' 之間的字符不計(jì)入答案。
同時(shí),第三條和第四條豎線 '|' 之間的字符也不計(jì)入答案。
不在豎線對(duì)之間總共有 2 個(gè)星號(hào),所以我們返回 2 。
示例 2:
輸入:s = "iamprogrammer"
輸出:0
解釋:在這個(gè)例子中,s 中沒有星號(hào)。所以返回 0 。
示例 3:
輸入:s = "yo|uar|e|b|eau|tifu|l"
輸出:5
解釋:需要考慮的字符加粗加斜體后:"yo|uar|e|b|e**au|tifu|l" 。不在豎線對(duì)之間總共有 5 個(gè)星號(hào)。所以我們返回 5 。
提示:
1 <= s.length <= 1000
s 只包含小寫英文字母,豎線 '|' 和星號(hào) '*' 。
s 包含 偶數(shù) 個(gè)豎線 '|' 。
思路:
模擬,根據(jù)題意,需要統(tǒng)計(jì)第偶數(shù)個(gè)豎線之后,第奇數(shù)個(gè)豎線之前,以及第一個(gè)豎線之前和最后一個(gè)豎線之后的星號(hào)??梢杂靡粋€(gè)布爾值 valid 表示接下去遇到的星號(hào)是否要納入統(tǒng)計(jì),初始化為 true,并且每次遇到豎線都要取反,最后返回符合條件的星號(hào)數(shù)量即可。
java代碼:
class Solution {
public int countAsterisks(String s) {
boolean valid = true;
int res = 0;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == '|') {
valid = !valid;
} else if (c == '*' && valid) {
res++;
}
}
return res;
}
}