/*
Count the number of segments in a string, where a segment is defined to be a contiguous sequence of non-space characters.
Please note that the string does not contain any non-printable characters.
Example:
Input: "Hello, my name is John"
Output: 5
*/
/*
Thinking:
1. 要考慮頭尾空格的問題
2. 要考慮沒有空格的問題
3. 要考慮中間多個空格的問題
綜合以上如果
空格即為比較元素,字符串對于分割體來說,只存在兩種元素,
非空格,空格
_----_----__-----
符合這種0,1信號的問題,從0到1算作一個section,1降到0不計入,
也可以理解為波峰波谷之間的關系抽象
*/
enum SecmentsStatus: String {
case Space = " "
case Other = "o"
//切換狀態,返回是否切換
mutating func switchStatus(_ str: String) -> Bool {
//把輸入的子串轉換對兩種模式
let covertStr = (str == SecmentsStatus.Space.rawValue) ? SecmentsStatus.Space : SecmentsStatus.Other
//與當前狀態相同,則不做改變
if covertStr == self { //相同直接返回,不做改變
return false
}
//不同,則做切換
switch self {
case .Space:
self = SecmentsStatus.Other
return true
case .Other:
self = SecmentsStatus.Space
return false
}
}
}
func secments(In str: String) -> Int {
var beforeCharacter = SecmentsStatus.Space
var count = 0
for character in str.characters {
//發生了切換則+1
if beforeCharacter.switchStatus(String(character)) {
count += 1
}
}
return count
}
secments(In: "")
secments(In: "ab")
secments(In: "ab cd")
secments(In: "cd ef, defgh")
secments(In: "abc, def")
434. Number of Segments in a String
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
推薦閱讀更多精彩內容
- 題目出處 源自于leetcode 題目描述 Count the number of segments in a s...
- Count the number of segments in a string, where a segment...
- 題目 Count the number of segments in a string, where a segm...
- DescriptionCount the number of segments in a string, wher...