删除字符串中的字符。输入一个字符串s,再输入一个字符c,将字符串s中出现的所有字符c删除。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除字符串中的字符。输入一个字符串s,再输入一个字符c,将字符串s中出现的所有字符c删除。相关的知识,希望对你有一定的参考价值。

【输入形式】
【评分标准】首先打印提示Input a string:;然后直接在冒号后面输入字符串,字符串中可以包含空格;字符串以回车结束。
打印提示Input a char: 然后直接在冒号后面输入一个字符;回车。
【输出形式】
首先打印After deleted,the string is:紧跟后面输出被删除后的字符串剩余内容;换行。
【运行时的输入输出样例】(下划线部分表示输入)
Input a string:happy new year
Input a char:a
After deleted,the string is:hppy new yer

【问题描述】
编程判断输入的一串字符是否为“回文”。所谓回文,是指顺读和倒读都一样的字符串。如XYZYX和xyzzyx都是回文。
【输入形式】
首先打印提示“Input a string:";然后直接在冒号后面输入字符串,字符串中可以包含空格;字符串以回车结束。
【输出形式】
如果判定是回文,则打印YES;换行;
如果判定不是回文,则打印NO;换行。
【运行时的输入输出样例1】(下划线部分表示输入)
Input a string:abcddcba
YES
【运行时的输入输出样例2】(下划线部分表示输入)
Input a string:abcddcb
NO

#include<stdio.h>
int main()
char s[200],c;
 int i,j;
 printf("Input a string:");  
 gets(s);
 printf("Input a char:");  
 scanf("%c",&c);
 for(i=j=0;s[i];i++)
   if(s[i]!=c)s[j++]=s[i];
 s[j]='\\0';  
 printf("After deleted,the string is %s\\n",s);  
 return 0;

参考技术A #include <stdio.h>
#include <string.h>
#define N 1024
int isHuiwenString(char *ps)

char *p,*q;
p=ps;  //指向首字符
q=ps+strlen(ps)-1;  //指向末字符
while(p<q)
if(*p++ != *q--)
return 0;


return 1;

int main()

char str[N],ch;
int flag;
printf("Input a string:");
gets(str);
flag=isHuiwenString(str);
if(flag)
printf("YES\\n",str);
else
printf("NO\\n");
return 0;


//示例运行结果

F:\\c_work>a.exe
Input a string:abcddcba
YES

F:\\c_work>a.exe
Input a string:abcddcb
NO

F:\\c_work>a.exe
Input a string:xyzzyx
YES

字符串的查找删除(王道)

题目描述:

给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。

输入:

输入只有1组数据。
输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。

输出:

删除输入的短字符串(不区分大小写)并去掉空格,输出。

样例输入:
in
#include 
int main()
{

printf(" Hi ");
}
样例输出:
#clude
tma()
{

prtf("Hi");
}
提示:

注:将字符串中的In、IN、iN、in删除。

 1 #include <iostream>
 2 #include<string.h>
 3 #include<cstdio>
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     char str[101];
 9     gets(str);
10     string a=str;
11     for(int i=0;i<a.size();i++)
12         a[i]=tolower(a[i]);
13     while(gets(str)){
14             string b=str,c=b;
15         for(int i=0;i<b.size();i++)
16             b[i]=tolower(b[i]);
17         int t=b.find(a,0);
18         while(t!=string::npos){
19             c.erase(t,a.size());
20             b.erase(t,a.size());//这里之所以还要用一个b是为了查询,即c是初始字符串,b是用来查询位置的
//这里的erase是第一种用法。
21 t=b.find(a,t); 22 } 23 t=c.find( ,0); 24 while(t!=string::npos){ 25 c.erase(t,1); 26 t=c.find( ,0); 27 } 28 cout << c << endl; 29 } 30 return 0; 31 }

这个代码主要是几个函数的使用:

1.gets函数:读入输入中一整行的数据保存在str中 

2.tolower函数:a中字符全部改成小写

3.find函数:前一个参数是配对字符串,后一个参数是查找开始下标。如果能找到,返回第一次出现的下标;如果不能找到,返回string::npos

4.erase函数:有三种用法:

(1)erase(pos,n); 删除从pos开始的n个字符,比如erase(0,1)就是删除第一个字符
(2)erase(position);删除position处的一个字符(position是个string类型的迭代器)
(3)erase(first,last);删除从first到last之间的字符(first和last都是迭代器)

以上是关于删除字符串中的字符。输入一个字符串s,再输入一个字符c,将字符串s中出现的所有字符c删除。的主要内容,如果未能解决你的问题,请参考以下文章

字符串的查找删除(王道)

算法训练 字符删除

java编程 从键盘输入一个字符串和一个字符 从该字符串中删除给定的字符

牛客网-删除公共字符

C语言从键盘输入一个字符串,并删除该字符串中所有大写字母字符

680. 验证回文字符串 Ⅱ