l两个字符串相关问题

来源:互联网 发布:光盘测试软件 编辑:程序博客网 时间:2024/05/16 19:39
将一个字符串str1中被字符串str2包含的字符去掉,
去掉一个字符串中重复的字符。
判断两个字符串的字母以及出现次数是否相同。
用额外的空间去存储一个字符串中的信息,提升速度。
#include<iostream>#include<string>using namespace std;//delete the char in str that occured in chstring 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 charstring 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;}