牛牛有一个由小写字母组成的字符串s,在s中可能有一些字母重复出现。比如在"banana"中,字母'a'和字母'n'分别出现了三次和两次。
但是牛牛不喜欢重复。对于同一个字母,他只想保留第一次出现并删除掉后面出现的字母。请帮助牛牛完成对s的操作。
输入包括一个字符串s,s的长度length(1 ≤ length ≤ 1000),s中的每个字符都是小写的英文字母('a' - 'z')
输出一个字符串,表示满足牛牛要求的字符串
banana
ban
//比特位表示字母是否出现 import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); String s = sc.nextLine(); String res = ""; int flag = 0; for(int i=0;i<s.length();i++){ int temp = 1<<(s.charAt(i)-'a'); if((temp&flag)==0) {//第一次出现 res+=s.charAt(i); flag|=temp; } } System.out.print(res); } }
//建表
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str;
int WordTable[26] = { 0 };
while (cin >> str)
{
for (char c : str)
if (WordTable[c - 'a'] == 0)
WordTable[c - 'a'] = 1,cout<<c;
cout << endl;
}
return 0;
}
import java.util.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner cin=new Scanner (System.in); String str=cin.next(); int a=str.length(); String s=""; String s1=String.valueOf(str.charAt(0))+s; for(int i=1;i<a;i++) { if(s1.contains(String.valueOf(str.charAt(i)))==true)continue; else { s1=s1+String.valueOf(str.charAt(i))+s; } } System.out.print(s1); } }
import java.util.Scanner; import java.util.Set; import java.util.LinkedHashSet; public class Main{ public static void main(String[] args){ try(Scanner in = new Scanner(System.in)){ System.out.println(helper(in.nextLine())); } } public static String helper(String s){ Set<Character> set = new LinkedHashSet<>(); char[] cs = s.toCharArray(); for(char c:cs){ set.add(c); } StringBuffer sb = new StringBuffer(); for(char c:set){ sb.append(c); } return sb.toString(); } }
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(const int argc, const char* argv[]) { int32_t state = 0; char input[1024] = { 0 }, ans[1024] = { 0 }; fgets(input, 1024, stdin); const char* p = input; while (*p) { if (state & 1 << *p - 97) { ++p; continue; } state |= 1 << *p - 97; strncat(ans, p++, 1); } return fputs(ans, stdout), 0; }
#include <iostream> #include <math.h> #include <cstdio> #include<algorithm> #include<string> #include<stdlib.h> #include<map> #include<stdio.h> using namespace std; int main() { string s,res=""; cin>>s; map<char,bool> Num; for(int i=0;i<s.length();i++) { char temp=s[i]; if(Num.count(temp)==0)//if(!Num.count(temp))//未出现字符 { res+=s[i]; Num[temp]++; } } cout<<res<<endl; return 0; }
array=input() s=list(set(list(map(str,array)))) s.sort(key=array.index) print(''.join(str(i) for i in s))
import java.util.HashSet; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next(); StringBuilder sb = new StringBuilder(); sb.append(str); HashSet<Character> set = new HashSet(); for (int i = 0; i < sb.length(); i++) { if (set.contains(sb.charAt(i))) { sb.setCharAt(i, '0'); } set.add(sb.charAt(i)); } System.out.println(sb.toString().replace("0", "")); } }
##Python s=input() s2=list(set(s)) #去掉重复元素后的列表 s2.sort(key=s.index) #对s2的元素按照原来的顺序排序 print(''.join(s2))
#include<iostream>
#include<map>
using namespace std;
int main() {
string s, ans = "";
map<char, bool> map;
cin >> s;
for (int i = 0; i < s.size(); i++) {
if (!map.count(s[i])) {
ans += s[i];
map[s[i]] = true;
}
}
cout << ans << endl;
return 0;
}
#include<stdio.h> #include<string.h> int main() { int letter[26],length,i; memset(letter,0,sizeof(letter)); char str[1000]; gets(str); length=strlen(str); for(i=0;i<=length-1;i++) { if(letter[str[i]-'a']==0) letter[str[i]-'a']=1; else str[i]=0; } for(i=0;i<=length-1;i++) { if(str[i]!=0) printf("%c",str[i]); } return 0; }