牛牛有一个由小写字母组成的字符串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", ""));
}
}
#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;
}
#include <bits/stdc++.h>
using namespace std;
int main()
{
map<char,int> m;
string s;
cin >> s;
for(auto it : s)
{
if(m[it] == 0)
{
cout << it;
m[it]++;
}
}
return 0;
}