从一个字符串(A)中删去另一个字符串(B)中已经出现的字符
来源:互联网 发布:alpine linux apk add 编辑:程序博客网 时间:2024/05/02 06:01
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: rgb(255, 255, 255);">从一个字符串(A)中删去另一个字符串(B)中已经出现的字符</span>
1.首先要对另一个字符串进行标记
标记的方法有很多我举一个例子:
用一个bool数组来存26个字母并且对他们初始化为false,如果另外那个字符串存在,则将它变为true
比如 num[2]=true,就是说明 b 这个字符出现于另外一个字符串
2.就是去掉那些在A中已经被标记的字符
你可以用移动的方法去掉它:(这种方法的时间复杂度为n*n)不提倡
for(int i=0;i<n;i++)
{
k=A[i]-'a';
if(num[k])
{
for(int j=i;j<n-1;j++)
A[j]=A[j+1];
n--;
}
}
另外的一种方法,时间复杂度为n
我们可以设置两个指针 low ,high,开始的时候他们都指向A字符串的第一个元素即 low=high=A;
当high指针指向的字符不是ture,我们将*low=*high 并且 low++ ,high++;
当high指针指向的字符是ture,我们直接high++,其他的不处理;
之后我们需要把踢出去的字符截断,直接*low='\0';
之后直接打印出字符串A;OK 了
话不多说,直接上代码,是最详细的!如果有问题的话,可以直接评论,我会尽快回答的!
<pre name="code" class="cpp">#include<iostream> using namespace std;#include<cstring>bool visited[26]; //设置全局的bool数组,来标记字符的状态int main() { int i,len1,len2,num; char str1[100]; char str2[100]; cin>>str1>>str2;//输入字符串 for(i=0;i<26;i++) visited[i]=false;//初始化标志数组 len1=strlen(str1); len2=strlen(str2); for(i=0;i<len2;i++)//对字符串2中出现的字符进行标志 { num=str2[i]-97; visited[num]=true; } /*下面是这个程序的核心*/ char *high,*low;//对两个指针初始化,指向字符串的第一个字符 high=low=str1; while(*high!='\0') { if(!visited[*high-97]) { *low=*high; high++; low++; } else high++;//直接跳过 } *low='\0';//直接截断字符串,删去多余的字符 if(str1[0]=='\0') cout<<"字符串1中的字符与字符串2中的字符完全重复"<<endl; else cout<<str1<<endl; return 0; }
0 0
- 从一个字符串(A)中删去另一个字符串(B)中已经出现的字符
- 从一个字符串中删除另一个字符串中出现的字符
- 从一个字符串中删除另一个字符串中出现的字符
- 从一个字符串中删除另一个字符串中出现过的字符
- 小米面试题 从一个字符串中删除在另一个字符串中出现的字符
- 从一个给定的字符串中删去某一个给定的字符
- 从字符串A中删除字符串B的所有字符
- 从第一个字符串中删去第二个字符串的所有字符的两种方法
- 在字符串中删除另一个字符串中出现的字符
- 在字符串中删除另一个字符串中出现的字符
- 在字符串中删除另一个字符串中出现的字符
- 在一个字符串中删除在另一个字符串中出现的字符
- 在一个字符串中删除指定的字符 & 删除字符串中所有出现在另一个字符数组中的字符
- 删去字符串中包含的a、e、i、o、u字符
- 读入一个字符串(长度不大于100,不包括换行符’\n’),删去字符串中相同的排在后面的字符并输出。
- 从一个字符串中删除另一个字符串
- 一个字符串中包含另一个字符串所有字符的最短子串
- java获取某个字符在一个字符串中出现的下标(从0开始)
- PLMN
- metinfo全版本csrf漏洞(可导致重装)
- Eclipse(Luna)查看class源代码文件
- vsan和vvol概念理解
- Android 瀑布流控件的实现
- 从一个字符串(A)中删去另一个字符串(B)中已经出现的字符
- 虚函数表
- 红黑树
- 天气预报接口
- 我在这记录我的“安卓程序员”开发之路
- 技术债务可能是这样来的
- Leetcode - Add Binary
- 笔记-->关系操作符 ==
- 如何让自己内心强大起来 [转]