将一个字符串str1中被字符串str2包含的字符去掉,
去掉一个字符串中重复的字符。
判断两个字符串的字母以及出现次数是否相同。
用额外的空间去存储一个字符串中的信息,提升速度。
#include<iostream>
#include<string>
using namespace std;
//delete the char in str that occured in ch
string FirstNotRepeat(string str,string ch){
if(str=="")
return '\0';
int i=0;
int hashTable[256];
for(i=0;i<256;i++)
hashTable[i]=0;
for(i=0;i<ch.length();i++)
hashTable[ch[i]]++;
int index=0;
for(i=0;i<str.length();i++){
if(hashTable[str[i]]){
str[i]='\0';
}else{
str[index]=str[i];
index++;
}
}
return str;
}
//delete the repeat char
string DeleteRepeat(string str){
bool flag[256];
int index=0;
for(int j=0;j<256;j++)
flag[j]=0;
for(int i=0;i<str.length();i++){
if(flag[str[i]]){
str[i]='\0';
}else{
flag[str[i]]=1;
str[index]=str[i];
index++;
}
}
return str;
}
bool isAnagram(string str,string ch){
int flag[256];
int index=0;
int i;
for(i=0;i<256;i++)
flag[i]=0;
for(i=0;i<str.length();i++)
flag[str[i]]++;
for(i=0;i<ch.length();i++)
flag[ch[i]]--;
for(i=0;i<256;i++)
if(flag[i])
return false;
return true;
}
int main(){
string str="silent";
string str2="lisjten";
//cout<<FirstNotRepeat(str,str2)<<endl;
//cout<<DeleteRepeat(str);
cout<<isAnagram(str,str2);
return 0;
}