输入一个字符串,判断该字符串里是否有123子串,若有,输出第一个123的位置,若没有输出NOc++
时间: 2023-05-12 07:05:13 浏览: 85
我可以回答这个问题。可以使用滑动窗口算法来解决这个问题。具体实现如下:
```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子串,若有,输出第一个123的位置,若没有输出NO
以下是一个可能的解决方案:
```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'。如果找到了,就返回该三元组的起始位置;如果没有找到,就返回'NO'。
给定两个字符串,判断第二个串是不是第一个串的子串,如,abc是123abcdef的子串
要判断一个字符串是否是另一个字符串的子串,你可以使用C语言中的`strstr()`函数。这个函数会在查找字符串(也称为"主字符串")中查找指定的子串,并返回首次出现的位置。如果找不到子串,则返回`NULL`。
以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "123abcdef";
char str2[] = "abc";
if (strstr(str1, str2) != NULL) {
printf("%s is a substring of %s.\n", str2, str1);
} else {
printf("%s is not a substring of %s.\n", str2, str1);
}
return 0;
}
```
在这个例子中,`strstr(str1, str2)`会检查`str1`中是否存在`str2`。如果存在,程序会输出`abc is a substring of 123abcdef`;反之则输出`abc is not a substring of 123abcdef`。
阅读全文