题目说起来很简单,你会读到两个字符串,每个字符串占据一行,每个字符串的长度均小于10000字符,而且第一个字符串的长度小于第二个字符串的。你的程序要找出第一个字符串在第二个字符串中出现的位置,输出这些
时间: 2024-12-12 08:07:43 浏览: 10
题目描述的是一个简单的字符串查找任务。给定两个输入字符串,你需要找到第一个字符串作为子串出现在第二个字符串中的所有起始位置。通常这种问题可以使用滑动窗口法或者逐字符遍历解决。这里是一个基本的Python示例:
```python
def find_positions(s1, s2):
positions = []
for i in range(len(s2) - len(s1) + 1): # 滑动窗口从0开始
if s2[i:i+len(s1)] == s1: # 如果子串匹配
positions.append(i)
return positions
# 测试例子
s1 = "hello"
s2 = "hello world, hello again"
positions = find_positions(s1, s2)
print("第一个字符串在第二个字符串中的位置:", positions)
```
在这个函数中,我们创建了一个空列表`positions`来存储结果。然后,我们迭代第二个字符串`s2`的每个字符,形成一个长度等于`s1`的子串,并检查它是否与`s1`相等。如果匹配,就将当前索引`i`添加到`positions`中。
相关问题
题目描述 输入n个城市的名称,进行升序排序并输出。输入要求 第一行输入一个整数n,表示有n个城市,n不超过100。接着输入n个字符串,每个字符串代表一个城市名,一个字符串内部不包含空格,字符串长度不超过100。输出要求 输出排序后的城市名字。每个城市名占据一行。 c语言
好的,以下是使用冒泡排序算法解决该问题的 C 代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
int n;
char cities[100][100];
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%s", cities[i]);
}
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (strcmp(cities[j], cities[j+1]) > 0) {
char temp[100];
strcpy(temp, cities[j]);
strcpy(cities[j], cities[j+1]);
strcpy(cities[j+1], temp);
}
}
}
for (int i = 0; i < n; i++) {
printf("%s\n", cities[i]);
}
return 0;
}
```
这个代码中,我们首先读入整数 n,表示城市数量。然后使用一个二维字符数组 cities 来存储 n 个城市名。接下来我们使用冒泡排序算法对这个数组进行排序。最后,我们遍历排序后的数组,并将每个城市名打印出来。需要注意的是,我们使用 strcmp() 函数来比较两个字符串的大小关系。
阅读全文