[Swift]LeetCode1078. Bigram 分词 | Occurrences After Bigram
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/10993147.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
Given words first
and second
, consider occurrences in some text
of the form "first second third
", where second
comes immediately after first
, and third
comes immediately after second
.
For each such occurrence, add "third
" to the answer, and return the answer.
Example 1:
Input: text = "alice is a good girl she is a good student", first = "a", second = "good"
Output: ["girl","student"]
Example 2:
Input: text = "we will we will rock you", first = "we", second = "will"
Output: ["we","rock"]
Note:
1 <= text.length <= 1000
text
consists of space separated words, where each word consists of lowercase English letters.1 <= first.length, second.length <= 10
first
andsecond
consist of lowercase English letters.
给出第一个词 first
和第二个词 second
,考虑在某些文本 text
中可能以 "first second third
" 形式出现的情况,其中 second
紧随 first
出现,third
紧随 second
出现。
对于每种这样的情况,将第三个词 "third
" 添加到答案中,并返回答案。
示例 1:
输入:text = "alice is a good girl she is a good student", first = "a", second = "good" 输出:["girl","student"]
示例 2:
输入:text = "we will we will rock you", first = "we", second = "will" 输出:["we","rock"]
提示:
1 <= text.length <= 1000
text
由一些用空格分隔的单词组成,每个单词都由小写英文字母组成1 <= first.length, second.length <= 10
first
和second
由小写英文字母组成
1 class Solution { 2 func findOcurrences(_ text: String, _ first: String, _ second: String) -> [String] { 3 let subString = first + " " + second 4 let arr = text.split(separator: " ") 5 var result = [String]() 6 for i in 0..<arr.count-2 { 7 if arr[i] == first && arr[i+1] == second { 8 result.append(String(arr[i+2])) 9 } 10 } 11 return result 12 } 13 }
Runtime: 8 ms
1 import Foundation 2 class Solution { 3 func findOcurrences(_ text: String, _ first: String, _ second: String) -> [String] { 4 if text.isEmpty {return []} 5 var words:[String] = text.components(separatedBy: " ") 6 var list:[String] = [String]() 7 for i in 2..<words.count 8 { 9 if first == words[i-2] && second == words[i-1] 10 { 11 list.append(words[i]) 12 } 13 } 14 return list 15 } 16 }
8ms
1 class Solution { 2 func findOcurrences(_ text: String, _ first: String, _ second: String) -> [String] { 3 var answer: [String] = [] 4 5 var words = Array(text.split(separator: " ")) 6 7 var i = 0 8 9 while (i + 2) < words.count { 10 if words[i] == first, words[i + 1] == second { 11 answer.append(String(words[i + 2])) 12 } 13 14 i += 1 15 } 16 17 return answer 18 } 19 }