1- Description
編寫一個函數,計算字元串中含有的不同字元的個數。字元在ACSII碼範圍内(0~127)。不在範圍内的不作統計。
輸入描述:
輸入N個字元,字元在ACSII碼範圍内。
輸出描述:
輸出範圍在(0~127)字元的個數。
示例1:
輸入:
輸出:
abc
3
2- Solution
- 注意
的使用resultvec.erase(resultvec.begin() + j);
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
string strin;
while(cin >> strin){
int count = 0;
vector<int> resultvec;
for(int i = 0; i < strin.length(); ++i){
if(strin[i] >= 0 && strin[i] <= 127){
resultvec.push_back(strin[i]);
}
}
sort(resultvec.begin(),resultvec.end());
int countnum = 0;
for(int i = 0; i < resultvec.size(); ++i){//取出重複元素
for(int j = i + 1; j < resultvec.size(); ++j){
if(resultvec[i] == resultvec[j]){
resultvec.erase(resultvec.begin() + j);//這裡不能寫成resultvec.erase( j);==》必須是疊代的輸入
--j;
}
}
}
cout << resultvec.size()<<endl;
}
return 0;
}
- 對自動排序且去重的情況可以考慮用set,ascii值在[0,127]時插入集合set中,輸出set中的元素個數
#include<iostream>
#include<set>
using namespace std;
int main()
{
char c;
set<char> s;
while(cin>>c){
if(c>=0 && c<=127){
s.insert(c);
}
}
cout << s.size() <<endl;
}
- 下面這種方法和提取不重複數字方法上是類似的!
#include<iostream>
using namespace std;
int main(){
char ch;
int arr[128]={0};
int count=0;
while(cin>>ch){
if(ch>=0 && ch<=127){
arr[ch]++;
}
}
for(int i=0;i<128;i++){
if(arr[i]>0)
count++;
}
cout<<count<<endl;
return 0;
}
歡迎關注公衆号:CodeLab