1.1 实现一个算法,确定一个字符串的所有字符是否全部不同。假设不允许使用额外的数据结构,又该如何处理?
C++实现:
#include<iostream> #include<string> #include<cstring> using namespace std; /* 判断是否有重复字符 */ bool unqString(string s) { if(s.empty()) return true; int n=s.length(); int word[256]={0}; int i; for(i=0;i<n;i++) word[s[i]]++; for(i=0;i<n;i++) if(word[s[i]]>1) return false; return true; } int main() { string str="asdhfdsf"; cout<<unqString(str)<<endl; }
使用关联容器set:
#include<set> #include<string> using namespace std; bool unqString(string s) { set<char> st; if(s.empty()) return false; size_t i; for(i=0;i<s.length();i++) st.insert(s[i]); if(st.size()!=s.length()) return false; else return true; } int main() { string str="asdhf"; cout<<unqString(str)<<endl; }