输入一个字符串,判断该字符串里是否有123子串,若有,输出第一个123的位置,若没有输出NO 
时间: 2023-05-12 17:05:13 浏览: 10
以下是一个简单的实现:
```python
def find_123(s):
for i in range(len(s) - 2):
if s[i:i+3] == '123':
return i
return 'NO'
s = input('请输入字符串:')
print(find_123(s))
```
如果输入的字符串中包含123子串,则输出第一个123的位置;否则输出NO。
相关问题
输入一个字符串,判断该字符串里是否有123子串,若有,输出第一个123的位置,若没有输出NOc++
我可以回答这个问题。可以使用滑动窗口算法来解决这个问题。具体实现如下:
```python
def find_123(s):
n = len(s)
i = j = k = 0
while i < n and j < n and k < n:
while i < n and s[i] != '1':
i += 1
j = i + 1
while j < n and s[j] != '2':
j += 1
k = j + 1
while k < n and s[k] != '3':
k += 1
if k < n:
return k - 2
i += 1
return "NO"
```
这个算法的时间复杂度为O(n),其中n为字符串的长度。
把一个正整数字符串分解成若干字串,例如123的子串为1、2、3、12、23、123
可以使用两层循环,分别确定子串的起始位置和结束位置,然后将子串添加到列表中。示例代码如下:
```python
num_str = "123"
substrings = []
for i in range(len(num_str)):
for j in range(i+1, len(num_str)+1):
substrings.append(num_str[i:j])
print(substrings)
```
输出结果为:
```
['1', '12', '123', '2', '23', '3']
```
在这个例子中,我们使用两层循环遍历字符串中所有可能的子串,并将它们添加到列表中。需要注意的是,第二层循环的起始位置应该为第一层循环的位置加1,这样才能遍历到所有可能的子串。
相关推荐















