输入一个字符串,求出该字符串包含的字符集合,按照字母输入的顺序输出。
数据范围:输入的字符串长度满足 ,且只包含大小写字母,区分大小写。
本题有多组输入
每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。
每组数据一行,按字符串原有的字符顺序,输出字符集合,即重复出现并靠后的字母不输出。
abcqweracb
abcqwer
aaa
a
#include <iostream> #include <vector> #include <string> #include <algorithm> using namespace std; int main() { string s; vector<char> cvec; while (cin >> s) { for (int i = 0; i < s.size(); ++i) { auto beg = find(cvec.begin(), cvec.end(), s[i]); if (beg == cvec.end()) { cvec.push_back(s[i]); cout << s[i]; } } cout << endl; s.clear(); cvec.clear(); } return 0; }
#include <iostream> #include <string> using namespace std; int main() { string str; while (cin >> str) { int len = str.size(); for (int i = 0; i < len; i++) { char ch = str[i]; if (ch != ' ') //略过已经标记的元素 { for (int j = i + 1; j < len; j++) //内层循环用于寻找相同元素 { if (ch == str[j]) { str[j] = ' '; //标记相同元素 } } } } //打印 for (int i = 0; i < len; i++) { if (str[i] != ' ') { cout << str[i]; } } cout << endl; } return 0; }
1. C++ 里的 哈希表头文件原来叫 <unordered_map>
#include <iostream> #include <string> #include <map> #include <unordered_map> using std::cin; using std::cout; using std::endl; using std::string; using std::unordered_map; int main() { string inputStr; string outputStr; while (cin >> inputStr) { // 清空输出结果的字符串,不然二次输入会重复 outputStr.clear(); // 哈希表,记录是否已经重复 // 由于比较短,哈希的映射为 O(1) unordered_map<char, bool> isStore; for (char i = 'a'; i <= 'z'; i++) { isStore.insert(std::pair<char, bool>(i, false)); } for (char i = 'A'; i <= 'Z'; i++) { isStore.insert(std::pair<char, bool>(i, false)); } for (unsigned long i = 0; i < inputStr.size(); i++){ if (isStore[inputStr[i]]) { continue; } else { outputStr = outputStr + inputStr[i]; isStore[inputStr[i]] = true; } } cout << outputStr << endl; } return 0; }
while True: try: s = input() d = dict() for i in range(len(s)): if s[i] in d: continue else: d[s[i]] = i new_tuple = sorted(d.items(), key=lambda x: x[1]) print(''.join([pair[0] for pair in new_tuple])) except: break
直接用set或者unordered_set去重,根据set的size作为是否重复的判断依据,然后将不重复的字符加入输出字串
#include #include #include using namespace std; int main() { string tmpstr; while(cin >> tmpstr) { string outstr; unordered_set uset; int size = 0; for(auto s : tmpstr) { uset.insert(s); if(uset.size() > size) { outstr.push_back(s); size++; } } cout << outstr << endl; } return 0; }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); while(sc.hasNext()){ String s=sc.nextLine(); String n=""; for(int i=0;i<s.length();i++){//遍历字符串s的每个字符 //String.valueOf(s.charAt(i)是把那个字符转换为字符串 if(!n.contains(String.valueOf(s.charAt(i)))){ n+=String.valueOf(s.charAt(i)); } } System.out.println(n); } } }
#include<iostream> #include<string> using namespace std; int main() { string str; while(cin>>str) { int l=str.length(); string str1={}; for(int i=0;i<l;i++) { if(str1.find(str[i])==-1) { str1+=str[i]; } } cout<<str1<<endl; } return 0; }
import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); while(sc.hasNext()){ String str=sc.next(); int[] count=new int[266]; for(int i=0;i<str.length();i++){ count[str.charAt(i)]++; if(count[str.charAt(i)]==1) System.out.print(str.charAt(i)+""); } System.out.println(); } } }
import java.util.*;public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);while(scan.hasNext()) {HashSet<Character> set = new HashSet<Character>();String str = scan.next();StringBuilder res = new StringBuilder();for(inti = 0; i < str.length(); i++) {if(!set.contains(str.charAt(i))){set.add(str.charAt(i));res.append(str.charAt(i));}}System.out.println(res.toString());}}}
#include<iostream> #include<string> #include<algorithm> using namespace std; int main(){ string a; while(cin >> a){ string res = ""; for(int i = 0; i < a.length(); i++){ if(a.find(a[i]) == i) res = res + a[i]; } cout << res << endl; } return 0; }
#include <iostream> #include <string> #include <string.h> using namespace std; int main(){ string str; while(cin>>str){ bzero(hash,sizeof(hash)); for(string::size_type idx=0;idx<str.size();++idx){ if(str[idx]<='z'&&str[idx]>='a'){ if(!hash[str[idx]-'a']){ cout<<str[idx]; hash[str[idx]-'a']=1; } }else{ if(!hash[str[idx]-'A'+26]){ cout<<str[idx]; hash[str[idx]-'A'+26]=1; } } } cout<<endl; } return 0; }
#include <iostream> #include <vector> using namespace std; int main(){ string a; while(cin >> a){ vector<char> result; int hash [128] = {0}; for(int i = 0; i < a.size(); i++){//不相同元素才push到vector中 int asc = a[i]; if(!hash[asc]){ hash[asc] = 1; result.push_back(a[i]); } } for(int j = 0; j < result.size(); j++) cout<<result[j]; cout<<endl; } }