53
53
54
54
<!-- 这里可写通用的实现逻辑 -->
55
55
56
+ ** 方法一:字符串分割**
57
+
58
+ 将 $sentence$ 按空格分割为 $words$,然后遍历 $words$,检查 $words[ i] $ 是否是 $searchWord$ 的前缀,是则返回 $i+1$。若遍历结束,所有单词都不满足,返回 $-1$。
59
+
60
+ 时间复杂度 $O(mn)$。其中 $m$ 是 $sentence$ 的长度,$n$ 是 $searchWord$ 的长度。
61
+
62
+
56
63
<!-- tabs:start -->
57
64
58
65
### ** Python3**
62
69
``` python
63
70
class Solution :
64
71
def isPrefixOfWord (self , sentence : str , searchWord : str ) -> int :
65
- words = sentence.split(' ' )
66
- i, n = 0 , len (words)
67
- while i < n:
68
- word = words[i]
69
- if word[: len (searchWord)] == searchWord:
70
- return i + 1
71
- i += 1
72
+ for i, s in enumerate (sentence.split(), 1 ):
73
+ if s.startswith(searchWord):
74
+ return i
72
75
return - 1
73
76
```
74
77
@@ -80,9 +83,8 @@ class Solution:
80
83
class Solution {
81
84
public int isPrefixOfWord (String sentence , String searchWord ) {
82
85
String [] words = sentence. split(" " );
83
- int i = 0 , n = words. length;
84
- for (; i < n; ++ i) {
85
- if (words[i]. indexOf(searchWord) == 0 ) {
86
+ for (int i = 0 ; i < words. length; ++ i) {
87
+ if (words[i]. startsWith(searchWord)) {
86
88
return i + 1 ;
87
89
}
88
90
}
@@ -91,6 +93,37 @@ class Solution {
91
93
}
92
94
```
93
95
96
+ ### ** C++**
97
+
98
+ ``` cpp
99
+ class Solution {
100
+ public:
101
+ int isPrefixOfWord(string sentence, string searchWord) {
102
+ stringstream ss(sentence);
103
+ string s;
104
+ for (int i = 1; ss >> s; ++i) {
105
+ if (s.find(searchWord) == 0) {
106
+ return i;
107
+ }
108
+ }
109
+ return -1;
110
+ }
111
+ };
112
+ ```
113
+
114
+ ### **Go**
115
+
116
+ ```go
117
+ func isPrefixOfWord(sentence string, searchWord string) int {
118
+ for i, s := range strings.Split(sentence, " ") {
119
+ if strings.HasPrefix(s, searchWord) {
120
+ return i + 1
121
+ }
122
+ }
123
+ return -1
124
+ }
125
+ ```
126
+
94
127
### ** ...**
95
128
96
129
```
0 commit comments