华为机试—删除相同子串
2015-01-06 00:13
190 查看
输入两个字符串,找出在第一个字符串中,有多少个第二个子串,输出个数,并输出删除全部第二个子串后的字符串。
输入:abcdcde cd
输出:2 abe
输入:abcdcde cd
输出:2 abe
#include <iostream> #include <string> using namespace std; int delete_sub_str(const char *str,const char *sub_str,char *result) { const char *p,*q; char *t,*tmp; int n=0; int num=0;//相同子串个数 p=str; q=sub_str; t=result; n=strlen(q); tmp =new char[n+1]; memset(tmp,0,n+1); while (*p) { memcpy(tmp,p,n);//从p的初始位置开始拷贝n个字符到tmp if (strcmp(tmp,q)==0)//tmp=q { num++; memset(tmp,0,n+1); p=p+n; } else { *t = *p; p++; t++; memset(tmp,0,n+1); } } delete tmp; return num; } void main() { char s[100] = {'\0'}; int num = delete_sub_str("123abc123de1234fg1hi34j123k","123",s); cout<<num<<endl; cout<<s<<endl; }
import java.util.Scanner; public class deleteCuan { public static void main(String[] args) { Scanner s = new Scanner(System.in); String str = s.nextLine(); Scanner s1 = new Scanner(System.in); String str1 = s1.nextLine(); int count=0; int k = str.indexOf(str1); while(k!=-1){ count++; k=str.indexOf(str1,k+str1.length()); } System.out.println(count); System.out.println(str.replace(str1,"")); } }
相关文章推荐
- (华为机试)删除字符串中相同子串
- 华为机试 删除字符串中所有给定的子串
- 华为机试 删除字符串中所有给定的子串
- 华为机试—相同子串
- 华为招聘机试整理1:删除子串
- 华为机试-删除字符串中所有给定的子串
- 华为机试-删除字符串中所有给定的子串
- 华为机试—相同子串
- 删除子串,只要是原串中有相同的子串就删掉,不管有多少个,返回子串个数(转)
- 华为机试-删除字符串中出现最少次数的字符
- 华为机试——子串分离
- 华为机试—字符串删除数字大写变小写
- C语言_删除相同的字符(华为笔试题)
- 华为机试——求一个字符串中的最大回文子串
- [华为机试练习题]24.删除链表中的重复节点、剩余节点逆序输出
- 华为机试——字符子串比较
- 华为 2015 机试 输出:数字后面的连续出现的(2个或多个)相同字符(数字或者字符),删去一个,非数字后面的不要删除,例如,对应输出为:33aabb55pin。
- [华为机试练习题]15.删除重复字符/删除重复字符串
- 删除子串,只要是原串中有相同的子串就删掉所有子串。子串至少两个字符。
- 华为机试题-判断一个数字中是否包含两个相同的子串