精华内容
下载资源
问答
  • 输入两个字符串,从第一个字符串中删除第二个字符串中的所有字符 比如输入第一个字符串:“They are students." 第二个字符串: "aeiou" 删除之后的第一个字符串变成"The r stdnts." 题目分析(思路): 创建三个...

    题目:

    输入两个字符串,从第一个字符串中删除第二个字符串中的所有字符
    比如输入第一个字符串:“They are students."
                 第二个字符串: "aeiou"
    删除之后的第一个字符串变成"The r stdnts."


    题目分析(思路):

    创建三个string类对象 第一个s1第二个str2为题目要求的字符串

    第三个str3则用来接收最后需要输出的字符串 

    循环遍历上面两个字符串 str1 str2

    如果str1中出现了str2中的任何一个则跳过看下一个字符 然后将str1中的下一个字符再与str2中的字符进行一一比较

    以此类推 相同跳过 str1中没有一个与str2中的字符相同则压入str3中


    代码展示:

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main() {
    	string str1;
    	string str2;
    	string str3;
    	char n=0,m=0;
    	while (1) {
    		n = getchar();
    		if (n == '\n') {
    			break;
    		}
    		str1.push_back(n);
    	}
    	while (1) {
    		m = getchar();
    		if (m == '\n') {
    			break;
    		}
    		str2.push_back(m);
    	}
    	bool sign = true;
    	string::iterator it1 = str1.begin();
    	string::iterator it2;
    	for (it1;it1 != str1.end();++it1) {
    		for (it2=str2.begin();it2 != str2.end();++it2) {
    			if (*it1 == *it2) {
    				sign = false;
    				break;
    			}
    		}
    		if (sign==true){
    			str3.push_back(*it1);
    		}
    		sign = true;
    	}
    	cout << str3.c_str() << endl;
    		system("pause");
    		return 0;
    }

    部分代码分析:

    while (1) {
    		n = getchar();
    		if (n == '\n') {
    			break;
    		}
    		str1.push_back(n);
    	}

    这段代码 ↑ 是输入一个字符串str

    bool sign = true;
    	string::iterator it1 = str1.begin();
    	string::iterator it2;
    	for (it1;it1 != str1.end();++it1) {
    		for (it2=str2.begin();it2 != str2.end();++it2) {
    			if (*it1 == *it2) {
    				sign = false;
    				break;
    			}
    		}
    		if (sign==true){
    			str3.push_back(*it1);
    		}
    		sign = true;
    	}

    这段代码 ↑ 应该是解这个题目的关键核心

    巧妙之处在于定义了一个bool变量 用来标记字符串str2中的其中一字符是否与str1中的其中一个字符相同

    相同则标记为false 然后跳出循环 进行str1中下一个字符的判断 以此类推

    需要注意的是 在压入str3后 要将标记sign重新置为true

    否则上面一步sign被置为false  如果str1中下一个字符与str2中字符没有一个相同 那么也不会被压入str3中

    展开全文
  • 题目描述:输入两个字符串,从第一个字符串中删除第二个字符串中所有的字符。 例如:输入"They are students.",输入"aeiou",则删除之后的第一个字符串变为"Thy r stdnts." 思路:建立数组,将字符串 2 的字符在...

    题目描述:输入两个字符串,从第一个字符串中删除第二个字符串中所有的字符。

    例如:输入"They are students.",输入"aeiou",则删除之后的第一个字符串变为"Thy r stdnts."

    思路:建立数组,将字符串 2 的字符在数组中标记为 1,定义两个指针指向字符串 1,遍历字符串 1,若当前字符所代表的 ASIIC码在数组中对应的值不为 1,表示该字符不是字符串 2 中出现的字符。

    Java实现:

    •  StringBuilder() ——> 构造一个没有字符的字符串构建器,初始容量为16个字符。
    • append(char c) ——> 将char参数的字符串表示附加到此序列。该参数附加到此序列的内容,该序列的长度增加 
    • public String toString() ——> 返回表示此顺序中的数据的字符串。 新的String对象被分配并初始化以包含此对象当前表示的字符序列。 然后返回String 。 此序列的后续更改不影响 String 的内容。
    public class DeletePattern {
        public static String deletePattern(String a,String b){
            StringBuilder s = new StringBuilder();//存储结果字符串
            char[] b1 = new char[256];
            for(int i = 0;i < b.length();i++){
                b1[b.charAt(i) ] = 1;
            }
            for(int i = 0;i < a.length();i++){
                if(b1[a.charAt(i)] != 1){
                    s.append(a.charAt(i));
                }
            }
            return s.toString();
        }
            public static void main(String[] args) {
            String a = "They are students.";
            String b = "aeiou";
            System.out.println(deletePattern(a,b));
        }
    }

    C语言实现: 

    #define _CRT_SECURE_NO_WARNINGS 1
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    char* deletePattern(char *s1, char *s2){
    	int a[256] = { 0 };
    	while (*s2 != '\0'){
    		a[*s2] = 1;
    		s2++;
    	}
    	char *p1 = s1;
    	char *p2 = s1;
    	while (*p1 != '\0'){
    		if (a[*p1] != 1){
    			*p2 = *p1;
    			p2++;
    		}
    		p1++;
    	}
    	*p2 = '\0';
    	return s1;
    }
    int main(){
    	char s1[] =  "They are students." ;
    	char *s2 = "aeiou";
    	printf("%s\n",deletePattern(s1, s2));
    	system("pause");
    	return 0;
    }

     

    展开全文
  • 输入两个字符串,从第一个字符串中删除第二个字符串. 例: arr1[]={"How are You"}; arr2[]={"aeo"}; 删除后为: arr1[]={"Hw r Yu"} ; 方法一: 首先看到这个题,惯性思维我们会想到申请一个新的数组,然后...

    输入两个字符串,从第一个字符串中删除第二个字符串.

    例:

    arr1[]={"How are You" };

    arr2[]={"aeo"};

    删除后为:

    arr1[]={"Hw r Yu"} ;

     

    方法一:

        首先看到这个题,惯性思维我们会想到申请一个新的数组,然后遍历arr2,再遍历arr1z,碰到相同的进行删除操作即可.再把删除后的放在新数组,打印输出即可.不过这个方法的时间复杂度为O(n*m).

     

    方法二:

        当然也有一种别的方法,利用之前的用过的方法建立数组,将arr2字符串,以每个字符AsIIc值为下标记录在里面,并对出现的进行赋值为1. 然后通过两个指针遍历arr1,对出现的进行指针覆盖即可.

     

     

     

    //删除字符串
    #define _CRT_SECURE_NO_WARNINGS 1
    #include <stdio.h>
    #include <stdlib.h>
    char*DeleteArr(char *arr1, char*arr2)
    {
    	int str[256] = { 0 };
    	while (*arr2!= '\0')
    	{
    		str[*arr2]=1;
    		arr2++;
    	}
    	char *p1 = arr1;
    	char *p2 = arr1;
    	while (*p1!= '\0')
    	{
    		if (str[*p1]!= 1)
    		{
    			*p2 = *p1;
    			p2++;
    		}
    		p1++;
    	}
    	*p2 = '\0';
    	return arr1; 
    }
    
    int main()
    {
    	char arr1[] = { "How are You" };
    	char *arr2 = { "aeo" };
    	char*s=DeleteArr(arr1, arr2);
    	printf("%s", s);
    	system("pause");
    	return 0;
    }

     

     

     

     

     

    展开全文
  • 删除第一个字符串中出现的第二个字符串,比如s1:ababaabb, s2:aba,输出应为:baabb #include <iostream> #include <string> using namespace std; int main(){ string s1, s2; while(cin >> ...

    题目描述:

    删除第一个字符串中出现的第二个字符串,比如s1:ababaabb, s2:aba,输出应为:baabb

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main(){
        string s1, s2;
        while(cin >> s1){
            char c = getchar();
            cin >> s2;
            int pos = -1;
            while((pos = s1.find(s2)) >= 0){
                //cout << pos << endl;
                s1.erase(pos, s2.size());
                pos = -1;
            }
            cout << s1 << endl;
        }
        return 0;
    
    }
    s1.find(s2): return the position where s2 appear in s1. eg:s1 = "ababaabbab", s2 = "aab", and the result is 4;
    s1.find(ch): return the position where char ch appear in s1.
    s1.erase(pos, size): delete the char form pos to pos + size - 1; And return the s1 changed.
    s1.erase(pos): delete from the pos until the end.
    

    转载于:https://www.cnblogs.com/zhuobo/p/10506655.html

    展开全文
  • php 字符串删除第一个/最后一个字符

    千次阅读 2019-06-17 09:18:27
    删除字符串的第一个字符 substr('字符串',1); 删除字符串的最后一个字符 substr('字符串', 0, -1);
  • 输入两个字符串,从第一个字符串中删除第二个字符串中所有的字符 例如,输入str1为“ They are students.” 和str2为 “aeiou”, 则删除之后的第一个字符串变为“Thy r stdnts.” 题目分析:如果使用最简单多次遍...
  • 第一个字符串中删除第二个字符串; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str1 = sca...
  • 输入两个字符串,从第一个字符串中删除第二个字符串中所有的字符,例如:输入“They are students.“和"aeiou”,则删除之后的第一个字符串变成“Thy r stdnts"。 思路: 将第二个字符串的元素一一拿出用来和第一个...
  • 输入两个字符串,从第一个字符串中删除第二个字符串中的所有字符 比如输入“They are students." 删除之后的第一个字符串变成"The r stdnts." 思路是利用每个字符都有其对应的ASCII码值,将需要删除的字符的ascii为...
  • 例如,输入“ They are students.” 和 “aeiou”, 则删除之后的第一个字符串变为“Thy r stdnts.” 思路: 通过遍历,我们依次判定第一个字符串中是否存在第二个字符串中的第i个字符,如果存在,则删除该字符,...
  • 输入两个字符串,从第一字符串中删除第二个字符串...这样,从哪第一个字符串中读取一个字符便可在byte中快速定位是否相同。简单来说就是哈希映射的思想。 public String CharacterDeletion(String str, String sub) {
  • 输入两个字符串,从第一个字符串中删除第二个字符串中出现的所有字符。例如: 输入"abcdea" 与 "ac",则应该输出"bde"。 分析: 以下是一种简单高效的方法:我们可以设置两个指针pfast和pslow,初始化时两个都...
  • 第一个字符删除第二个字符出现过的所有字符 实例: 第一个字符:We are students.第二个字符:aeiou. 结果:W r stdnts. 题目分析: ①本题需要完成工作就是查找和删除 ②查找字符 我们可以使用先去遍历...
  • 实现以下函数:输入为两个字符串指针,要求从第一个字符串中删除第二 个字符串中没有出现过的字符,并  返回第一个字符串的指针。实现函数:  char* intersectStr(char* str1, char* str2)示例:  输入: str1=...
  • 题目描述:键盘输入两个字符串,从第一个字符串中,删除第二个字符串。 例如 输入:str1:hello,world! str2:world 输出:hello,! 思路: 1.判断 str1 是否含有 str2,倘若含有才有后续,倘若没有直接输出 str1即可...
  • 删除之后的第一个字符串变成'Thy r stdnts.' ''' s1 = input('请输入第一个字符串:') s2 = input('请输入第二个字符串:') # 方法一 # s3 = '' # for i in s1: # # print(i,end='') # if i not in s2: #判断 t in ...
  • 例如,输入“ They are students.” 和 “aeiou”, 则删除之后的第一个字符串变为“Thy r stdnts.” 解题思路:对于字符串,由于ASCII码的所有符号为256个(包括了拓展表)那么,我们可以申请一个数组用来代表这256...
  • 题目描述: ...则删除之后的第一个字符串变成”Thy r stdnts.” - 输入描述: 每个测试输入包含2个字符串 - 输出描述: 输出删除后的字符串 - 示例1: 输入 They are students. aeiou 输出 Thy r st...
  • 例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。 第一种思路 直接通过遍历,我们依次判定第一个字符串中是否存在第二个字符串中的第 i 个字符。如果存在,则删除...
  • 原题如下:输入2个字符串,从第一个字符串中删除第二个字符串中的所有字符 输入 'They are students' 'aeiou' 输出:Thy r stdnts (如果是你,你第一时间想到的是用什么方法呢?) 当时使用的方法如下,因为...
  • 例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。 思路:不可避免的是遍历第一个字符串,如果遍历一个字符,都需要去第二个字符串中查找其存不存在,那么复杂度会是...
  • 这个就是在一个字符串a中查找另一个字符串b中的字母出现的下标,存储在vector中,并通过vector的iterator来查找下标,若在字符串a中没有,才将字母添加到新的字符串中。 代码 C++代码如下: #include<a...
  • 通过键盘接收两个字符串,从第一个字符串中删除第二个字符串中所有的字符。 例:输入: All of you are students.        ots        输出:All ...
  • 从第一字符串中删除第二个字符串中所有的字符,例如第一个字符串“We are students.”,第二个字符串“aeiou”,则删除后的结果为“W r stdnts.”。通过文章知道,我们可以通过hash表来统计第二个字符串中的字符,...
  • //定义两个字符串 将第一个字符串中与第二个字符串不相同的元素提出来 public class TestDemo1{ public static List<Character> searchNotRepeatChar(String str1,String str2){ Lis...
  • 题目:定义一个函数,从第一...我们可以利用一个哈希表将第二个字符串中出现的所有字符映射进去,这样就可以在O(1)的时间内判断出第一个字符串中的字符是否出现在第二个字符串中,同时可以在O(N)的时间内删除第二个

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,507
精华内容 3,002
关键字:

删除第一个字符