首页 > 试题广场 >

从字符串中“aecbcda”找出不重复的字符组成的顺序子串“

[问答题]
从字符串中“aecbcda”找出不重复的字符组成的顺序子串“aecbd”,用最优的时空复杂度。

答题说明:该题为手动判卷,答案只要写对即可,不用严格满足字符比对。
#include<stdio.h>  
#include<string.h>
main()
{
   char a[100],b[100];
   int i,j,len,count=0,flag;
   gets(a);
   len=strlen(a);
   for(i=0;i<len;i++)
   {
       flag=1;
         for(j=i-1;j>=0;j--)
             if(a[i]==a[j])
             {
                 flag=0;
                 break;
             }
       if(flag==1)
          b[count++]=a[i];
   }
   b[count]='\0';
   puts(b);
}

发表于 2018-08-16 13:55:29 回复(4)
#include<stdio.h>
(737)#include<stdlib.h>
#include<string.h>
(845)#define STLEN 20
void main(void)
{
	char  s[] = "aecbcda";
	char res[STLEN]={0};
	int n=0;
	int count=0;
	int i=0;
	int flag=0;
	int len = strlen(s);
	while(n<len)
	{	
		flag=0;	
		for(i=0;i<count;i++)
		{
			if(res[i]==s[n])
			{
				flag=1;
				break;
			}			
		}
		if(flag==0)
		{
			res[count++]=s[n];
		}		
		n++;	
	}
	puts(res);
}


发表于 2020-04-27 12:01:48 回复(1)

#include <stdio.h>
#include <string.h>

int main()
{
	char str1[20],str2[20];
	int i,j,len;
	int flag;
	int count=0;
	gets(str1);

	len = strlen(str1);
	
	for(i=0 ; i<len ; i++)
	{
		flag = 1;
		for(j=0 ; j<i ; j++)
		{
			if(str1[j] == str1[i])
			{
				flag = 0;
				break;
			}
		}
		
		if(flag == 1)
		{
			str2[count++] = str1[i];
		}
	}
	str2[count] = '\0';
	puts(str2);
	
	return 0;
}

发表于 2020-10-14 11:05:19 回复(0)
#include<stdio.h>
#include<string.h>

int main()
{
char str[100];
while(scanf("%s",str)!=EOF){
    short tmp[256]={0};
    short i=0;
    for(short j=0;j<strlen(str);j++){
        if(tmp[str[j]]==0){
            str[i++]=str[j];
            tmp[str[j]]=1;
        }
    }
    str[i]='\0';
printf("%s\n",str);
}
return 0;
}

发表于 2018-08-24 08:59:15 回复(1)
#include <stdio.h>
#include <string.h>
int main()
{
    char a[100];
    char b[100];
    gets(a);
    int num=26,i;
    int longth=strlen(a);
    memset(b,'\0',sizeof(a));
    for(i=0;i<longth;i++)
    {
            if(b[a[i]-'a']=='\0')
            {
                b[num++]=a[i];
                b[a[i]-'a']=1;
            }
    }
    for(i=26;i<num;i++)
    {
        printf("%c",b[i]);
    }
}
发表于 2019-08-25 17:49:42 回复(0)
#include<iostream>
#include<string>
using namespace std;
int main(){
    string str,res;
    cin>>str;
    int ch[225]={0};
    for(auto i:str){
        if(ch[i]==0){
            res+=i;
            ch[i]=1;
        }
    }
        cout<<res;
    return 0;
}

发表于 2019-08-21 22:33:50 回复(0)
#include <stdio.h>
int main()
{
    char str[10] = "aecbcda";
    int t[10] = {0};
    for(int i=0; i<7; i++){
        t[str[i]]++;
    }
    for(int i=0; i<7; i++){
        if(t[str[i]] > 1){
            printf("%c", str[i]);
            t[str[i]] = 0;
        }else if(t[str[i]] == 1){
            printf("%c", str[i]);
        }
    }

    return 0;
}

发表于 2022-04-25 21:18:13 回复(0)
char *slove(const char *str)
{
    char map[256];
    char *res = (char *)malloc(256);//排除'\0',因此最多只需255+1
    char *p = res;
 
    memset(map, 0, 256);
 
    while (*str) {
        if (map[*str] != 0) {
            map[*str] = 1;
            *p++ = *str;
        }
        str++;
    }
    *p = 0;
 
    return res;
}

发表于 2021-10-29 21:28:39 回复(0)
#include<stdio.h>
#include<string.h>
#include<malloc.h>
char* LongString(char* str,int length)
{
    if(str==NULL||length==0)
        return NULL;

    char* temp=(char*)malloc(sizeof(char)*length);
    temp[0]=str[0];
    int i=1;
    for(i;i<length;i++)
    {
        int j=0;
        int len=strlen(temp);
        char currentStr=str[i];
        int flag=0;
        for(j;j<len;j++)
        {    
            if(temp[j]==currentStr)
            {
                flag=1;
                break;
            }
        }
        if(flag==0)
        {
            temp[len]=currentStr;
            len++;
        }
    temp[len]='\0';
    }
    return temp;

}

int main(int argc, const char *argv[])
{
    char *str="lkjrdfsd";
    printf("%s\n",LongString(str,strlen(str)));
    return 0;
}

发表于 2021-09-08 19:22:24 回复(0)
#include <iostream>
#include <string>
#include <vector>
using namespace std;

void main() {
    string str = "aecbd";
    vector <char> litter;
    vector <char> litterout;
    int samenum =0;
    for (int i = 0; i < size(str); i++) {
        litter.push_back(str[i]);
    }
    for (int j = 0; j < size(str); j++) {
        for (int k = 0; k < j; k++){
            if (str[j] == litter[k])
                samenum++;
        }
        if (samenum == 0) {
            litterout.push_back(str[j]);
        }
    }
    for (vector <char> ::iterator it = litterout.begin(); it != litterout.end(); it++) {
        cout << *it;
    }
}
发表于 2021-07-17 11:50:27 回复(0)
def duplicateC(self, ch):
    memo = set()
    res = ''
    for c in ch:
        if c not in memo:
            res += c
        memo.add(c)
    return res


发表于 2021-01-23 16:24:58 回复(0)
某位大佬的C语言写法: #include<stdio.h> #include<string.h> int main() { char str[100]; while(scanf("%s",str)!=EOF){     short tmp[256]={0};     short i=0;     for(short j=0;j</string.h></stdio.h>
发表于 2020-09-02 09:32:47 回复(0)
#include <iostream>
#include <string.h>
using namespace std;

int main()
{
    int len = 0;
    char s[100];
    unsigned char vis[300]={0};
    scanf("%s",&s);
    len = strlen(s);
    for(int i=0; i<len; i++)
    {
        if(s[i]>='a' && s[i]<='z')
        {
            vis[s[i]-'a'] ++;
            if(vis[s[i]-'a'] <= 1)
                cout<<s[i];
        }
        else if(s[i]>='A' && s[i]<'Z')
        {
            vis[s[i]-'A'] ++;
              if(vis[s[i]-'A'] <= 1)
                cout<<s[i];
        } 
    }
    system("pause");
    return 0;
}

发表于 2020-08-25 15:56:07 回复(0)
str=raw_input()
res=[]
for i in str:
    if i not in res:
        res.append(i)
print "".join(res)
发表于 2019-10-06 09:40:23 回复(1)
#include<iostream>
#include<string>
#include<map>

using namespace std;

int main(){
    string s1,s2;
    map<int,char> ss;
    getline(cin,s1);
    ss.insert(pair<int,char>(1,s1[0]));
    s2+=s1[0];
    for(int i=1;i<s1.strlen();i++){
         if(!ss.count(ss.second)){
             ss.insert(pair<int,char>(1,s1[i]));
               s2+=s1[i];
}
}
cout<<s2<<endl;
}

发表于 2019-08-03 11:34:39 回复(0)
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
int main()
{     int Numa = 0, Numb = 0, Numc = 0, Numd = 0, Nume = 0, i = 0, j = 0, count = 0;     char strX[] = "aecbcda";     char strY[sizeof(strX)] = "";     for (i = 0; i < sizeof(strX); i++)     {         if (strX[i] == 'a')         {             Numa++;             if (Numa == 1)             {                 strY[j++] = strX[i];                 count++;             }         }         else if (strX[i] == 'b')         {             Numb++;             if (Numb == 1)             {                 strY[j++] = strX[i];                 count++;             }         }         else if (strX[i] == 'c')         {             Numc++;             if (Numc == 1)             {                 strY[j++] = strX[i];                 count++;             }         }         else if (strX[i] == 'd')         {             Numd++;             if (Numd == 1)             {                 strY[j++] = strX[i];                 count++;             }         }         else if (strX[i] == 'e')         {             Nume++;             if (Nume == 1)             {                 strY[j++] = strX[i];                 count++;             }         }     }     cout << strY << endl;     return 0; }

发表于 2019-07-29 22:46:19 回复(0)
#include <iostream>
using namespace std;
int main()
{
    int len = 0;
    string str1, str2;  cin >> str1;
    bool visit[str1.length()] = {flase};    //检查记录字符串中个字母是否重复
    for(int i=0;i<str1.length();i++)
    {    
        for(int j=0;j<i;j++)
        {
            if(visit[j])
                 break;
        }
        if(j == i)
        {
            str2[len] = str1[i];  len++;
        }
    }
    return 0;
}

发表于 2018-09-10 19:47:50 回复(0)
#include <iostream>
#include<string>


using namespace std;

string NonSameString(string str)
{
    int len = str.length();//求字符串长度
    if (len < 2)//字符串长度为0或者为1直接返回该字符串即可
        return str;
    string res = "";
    for (int i = 0; i < len; i++)
    {
        if (str[i] != ' ')
        {
            res += str[i];//res只存放不是空格且不重复的字符
            for (int j = i + 1; j < len; j++)
            {
                if (str[j] == str[i])//与前面字符重复的直接用空格替换
                    str[j] = ' ';
            }
        }
        
    }
    return res;
}


int main()
{
    string s1="aecbcda";

    cout << NonSameString(s1) << endl;
    
    system("pause");
    return 0;
}
发表于 2018-08-30 10:51:44 回复(0)

std::string fun(std::string & str){
    std:;string r_str;
    r_str.append(1,str[0]);
    for (int i = 1; i < str.size(); i++){
        int num = 0;
        int j = 0;
        while (j != r_str.length()){
            if (str[i] == r_str[j])
                break;
            else
                num++;
            j++;
        }
    if (num == r_str.length())
        r_str.append(1, str[i]);
    }
    return r_str;
}

编辑于 2018-08-22 10:52:47 回复(0)
#include<iostream>
#include<cstring>
using space std;
int main()
{
string str1="aecbcda";
string str2="aecbd";
string str3;
int len1=str1.lenght();
int len2=str2.lenght();
int i,j=0,k=0;
for(i=0;i<len1||i<len2;i++)
{
if(str1[i]==str2[j])
{
str3[k]=str1[i];
j++;
k++;
}


}


return 0;
}
编辑于 2018-08-21 10:12:11 回复(0)