用c++而不是c语言编写一段代码,输入一个字符串和一个子串,输出子串在字符串中出现的次数
时间: 2024-05-01 16:18:01 浏览: 97
好的,以下是用 c 编写的代码实现输入一个字符串和一个子串,输出子串在字符串中出现的次数:
```
#include <stdio.h>
#include <string.h>
int main() {
char str[1000], sub[1000];
int count = 0;
printf("请输入一个字符串:\n");
gets(str);
printf("请输入一个子串:\n");
gets(sub);
for (int i = 0; i <= strlen(str) - strlen(sub); i++) {
int flag = 1;
for (int j = 0; j < strlen(sub); j++) {
if (str[i + j] != sub[j]) {
flag = 0;
break;
}
}
if (flag) {
count++;
}
}
printf("子串在字符串中出现的次数为:%d\n", count);
return 0;
}
```
相关问题
用C++和C语言分别编写函数int index(chars, chart),字符串t在字符s中出现的最左边的位置作为返回值,如果s中没有与t匹配的子串,就返回-1,然后输出完整的代码
以下是使用C语言编写的函数int index(chars, chart)的代码:
```
#include <stdio.h>
#include <string.h>
int index(char* s, char* t)
{
int i, j, k;
int slen = strlen(s);
int tlen = strlen(t);
for(i = 0; i <= slen - tlen; i++)
{
j = i;
k = 0;
while(k < tlen && s[j] == t[k]) // 匹配t与s的子串
{
j++;
k++;
}
if(k == tlen) // 若匹配成功
return i;
}
return -1; // 若匹配失败
}
int main()
{
char s[100], t[100];
printf("请输入字符s: ");
scanf("%s", s);
printf("请输入字符t: ");
scanf("%s", t);
int pos = index(s, t); // 调用index函数
if(pos == -1)
printf("不存在子串t\n");
else
printf("子串t在字符串s中的位置为%d\n", pos);
return 0;
}
```
以下是使用C++语言编写的函数int index(chars, chart)的代码:
```
#include <iostream>
#include <string>
using namespace std;
int index(string s, string t)
{
int i, j, k;
int slen = s.length();
int tlen = t.length();
for(i = 0; i <= slen - tlen; i++)
{
j = i;
k = 0;
while(k < tlen && s[j] == t[k]) // 匹配t与s的子串
{
j++;
k++;
}
if(k == tlen) // 若匹配成功
return i;
}
return -1; // 若匹配失败
}
int main()
{
string s, t;
cout << "请输入字符s: ";
cin >> s;
cout << "请输入字符t: ";
cin >> t;
int pos = index(s, t); // 调用index函数
if(pos == -1)
cout << "不存在子串t" << endl;
else
cout << "子串t在字符串s中的位置为" << pos << endl;
return 0;
}
```
给定一个字符串s,s中只包含数字,请返回s中最长的特殊的回文子串的长度 特殊的回文子串t满足 ·t进行任何次交换后可以变成一个回文字符申 输入格式 输入第一行包含一个字符串s。 数据范围 1s≤10^5 输出格式 特殊的回文子串的最长长度用C语言写不用C++
思路:
首先根据题意特殊的回文子串t满足·t进行任何次交换后可以变成一个回文字符但,我们可以先判断给出的字符串是否为回文字符串,如果是,那么最长的特殊的回文子串就是它本身;如果不是,那么最长的特殊的回文子串一定以字符串中的某个字符作为中心,或以某两个相邻字符的中间作为中心。
因此,我们可以遍历字符串中的每个字符,依次将它作为中心和它后面一个字符的中间,向两边扩展,记录下最长的回文子串长度即可。
注意,回文串的长度可能为奇数或偶数,所以我们要枚举两种情况。
时间复杂度
遍历每个字符,每个字符最多扩展n/2次,因此总时间复杂度为O(n^2)
C++ 代码
阅读全文