定义函数查找字串,如果t是s的子串,返回在s中起始下标,不是子串返回-1
时间: 2024-01-07 19:03:54 浏览: 69
好的,以下是 Python 语言的示例代码:
```python
def find_substring(s, t):
if t in s:
return s.index(t)
else:
return -1
```
其中,`s` 和 `t` 分别表示被查找的字符串和要查找的子串。我们使用 Python 内置函数 `in` 来判断 `t` 是否是 `s` 的子串,如果是,则返回 `s.index(t)`,即 `t` 在 `s` 中的起始下标;否则,返回 `-1`。
相关问题
编写一个程序,统计你的学号字符串在一段字符串(可自习定义)中出现的次数。要求用String类的常用方法来计算出现的次数。 例如:张三同学学号为123456,则统计“123456”在“namezhangsan123456idnumber123456and123”出现的次数为2。 实现思路: (1)实现本程序需要先定义两个字符串,一个子串,一个检索串。 (2)要查找子串在总串中出现的次数,可以先使用String类的contain()方法,判断总串中是否包含子串,如果不包含,那么不用计算,出现的次数一定为0。 (3)如果包含了,那么再具体计算出现的次数。使用String类的indexOf()方法可以获取子串在总串中第一次出现的索引。获取到之后,再在剩余字串(该索引加上子串长度的位置处)继续查找子串(可以通过String类的subString()方法将整串的剩余部分截取出来,然后在剩余整串中从头查找子串)。依次类推,通过循环完成查找,直到找不到子串为止,此时indexOf()方法的返回值为-1. (4)定义一个计数器,记录出现的次数,在循环中每查到一次子串,则计数器加1.
好的,以下是实现该程序的Java代码:
```
public class CountSubstring {
public static void main(String[] args) {
String str = "namezhangsan123456idnumber123456and123";
String subStr = "123456";
int count = 0;
int index = 0;
while ((index = str.indexOf(subStr, index)) != -1) {
count++;
index += subStr.length();
}
System.out.println(subStr + "出现的次数为:" + count);
}
}
```
这个程序中,我们定义了一个总串 `str` 和一个子串 `subStr`,通过 `indexOf()` 方法查找子串在总串中出现的次数。在循环中,我们通过 `indexOf()` 方法获取子串在总串中第一次出现的索引,然后将索引加上子串长度得到下一次查找的位置。如果查找不到子串,则 `indexOf()` 方法返回 -1,循环退出。最终输出子串出现的次数。
编写一个函数,给定两个非空字符串 s1 和 s2,判断 s2 在 s1 中的位置。如果 s1 中不包含 s2,返回-1;否则返回起始位置下标。题目参数保证 s1 中只包含一 个 s2 字串。要求编写的函数 func5 的函数原型如下: int f
```
int func5(char* s1, char* s2) {
int i, j, k;
int len1 = strlen(s1);
int len2 = strlen(s2);
for (i = 0; i <= len1 - len2; i++) {
for (j = i, k = 0; k < len2 && s1[j] == s2[k]; j++, k++);
if (k == len2) return i;
}
return -1;
}
```
该函数的实现思路为:在 s1 中寻找与 s2 相同的子串,同时记录下标。具体实现过程中,先遍历 s1 的每个字符,然后对于每个字符,再遍历 s2 中的字符,逐一比较两个字符串中的字符是否相同。如果 s2 中所有字符都与 s1 中某个子串中的字符相同,则返回该子串的起始下标;否则继续遍历下一个子串。如果在 s1 中找不到与 s2 相同的子串,则返回 -1。